2014-07-11 245 views
0

我对maven很陌生,在使它工作时遇到了一些麻烦。Surefire测试报告不起作用

我使用IntellijIDEA在网站上执行一些junit测试(使用selenium webdriver)。 测试正确执行,但无法生成报告。

我想我可能会错过目标或生命周期,但我无法真正理解它们是如何工作的以及它们应该放在哪里。 这是我的POM:

<?xml version="1.0" encoding="UTF-8"?> 

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
     http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

<groupId>com.lazerycode.selenium</groupId> 
<artifactId>maven-template</artifactId> 
<version>1.0-SNAPSHOT</version> 
<modelVersion>4.0.0</modelVersion> 

<name>Selenium Maven Template</name> 
<description>A Maven Template For Selenium</description> 
<url>http://www.lazerycode.com</url> 

<licenses> 
    <license> 
     <name>Apache 2</name> 
     <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> 
     <distribution>repo</distribution> 
     <comments>A business-friendly OSS license</comments> 
    </license> 
</licenses> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <standalone.binary.root.folder>${project.basedir}/selenium_standalone_binaries</standalone.binary.root.folder> 
    <browser>firefox</browser> 
    <threads>1</threads> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-server</artifactId> 
     <version>2.41.0</version> 
     <scope>test</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>com.opera</groupId> 
       <artifactId>operadriver</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>com.opera</groupId> 
     <artifactId>operadriver</artifactId> 
     <version>1.5</version> 
     <scope>test</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>org.seleniumhq.selenium</groupId> 
       <artifactId>selenium-remote-driver</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>com.github.detro.ghostdriver</groupId> 
     <artifactId>phantomjsdriver</artifactId> 
     <version>1.1.0</version> 
     <scope>test</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>org.seleniumhq.selenium</groupId> 
       <artifactId>selenium-remote-driver</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>6.8</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
       <version>2.3.2</version> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

<profiles> 
    <profile> 
     <id>selenium-tests</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>com.lazerycode.selenium</groupId> 
        <artifactId>driver-binary-downloader-maven-plugin</artifactId> 
        <version>1.0.3</version> 
        <configuration> 
         <rootStandaloneServerDirectory>${standalone.binary.root.folder}</rootStandaloneServerDirectory> 
         <downloadedZipFileDirectory>${project.basedir}/selenium_standalone_zips</downloadedZipFileDirectory> 
         <customRepositoryMap>${project.basedir}/RepositoryMap.xml</customRepositoryMap> 
        </configuration> 
        <executions> 
         <execution> 
          <goals> 
           <goal>selenium</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.7.2</version> 
        <dependencies> 
         <!-- Force using the latest JUnit 47 provider --> 
         <dependency> 
          <groupId>org.apache.maven.surefire</groupId> 
          <artifactId>surefire-junit47</artifactId> 
          <version>2.8</version> 
         </dependency> 
        </dependencies> 
        <configuration> 
         <includes> 
          <include>**/*/*/*/*.java</include> 
          <include>**/*/*/*.java</include> 
          <include>**/*/*.java</include> 
          <include>**/*.java</include> 
          <include>*.java</include> 

         </includes> 
         <parallel>methods</parallel> 
         <threadCount>${threads}</threadCount> 
        </configuration> 

       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 
<reporting> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-report-plugin</artifactId> 
      <version>2.17</version> 
     </plugin> 
    </plugins> 
</reporting> 

已使用硒测试模板生成。有人知道缺少什么吗?

回答

0

首先,您正在基于硒的使用进行集成测试,因此您应该使用maven-failsafe-plugin来代替。 除此之外,您正在使用0123.版本的2.7.2,但对于使用的报告,您使用的是maven-surefire-report-plugin 2.17 ...因此,您应该使用与maven-surefire-plugin和maven-surefire-report-plugin相同的版本。

+0

好的,谢谢!所以我该怎么做?用我的POM替换掉 失败保护,然后再试一次? 还是我仍然缺少一些配置? – Jack

+0

我查看了故障安全插件的官方页面,我安装了它(或者至少我认为是这样),然后尝试运行mvn验证我的项目根目录。事实证明,有0/0测试执行,在我看来,它是试图执行NG测试,而我使用Junit。 当然,无论如何都没有报道。 – Jack

+0

您已经基于单元测试模式而不是集成测试模式来命名测试。集成测试应该命名为'* IT.java',而单元测试应该命名为'* Test.java'。 – khmarbaise