早些时候我使用build.xml(ant(来运行我的测试用例,但现在我使用pom.xml(maven(来运行测试用例。
当我有蚂蚁时,我能够获得testng-xslt报告,但是在阅读了许多博客和教程后,我无法通过pom生成。我想调查有什么区别,我看到我的班级路径中有撒克逊.jar,但在 pom 中缺少它.xml所以我添加了一个依赖项。第二件事,我注意到我没有在pom.xml中指定.xml路径(我不知道在pom中添加它(。我同时提供pom.xml和build.xml在这里,请同时查看两者,并让我知道我错过了通过pom生成testng-xslt报告的内容.xml但它存在于build中.xml以及我如何解决这个问题。
构建.xml
<target name="testng-xslt-report">
<delete dir="${basedir}/testng-xslt">
</delete>
<mkdir dir="${basedir}/testng-xslt">
</mkdir>
<xslt in="${basedir}/test-output/testng-results.xml" style="${basedir}/testng-results.xsl" out="${basedir}/testng-xslt/index.html">
<param expression="${basedir}/testng-xslt/" name="testNgXslt.outputDir" />
<param expression="true" name="testNgXslt.sortTestCaseLinks" />
<param expression="FAIL,SKIP,PASS,CONF,BY_CLASS" name="testNgXslt.testDetailsFilter" />
<param expression="true" name="testNgXslt.showRuntimeTotals" />
<classpath location="D:automationwindowsprojectzookeeperlibsaxon-8.7.jar">
</classpath>
</xslt>
</target>
绒球.xml
<build>
<testResources>
<testResource>
<directory>src/test/resource</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>
C:/Users/windowspc/workspace/windows-project/Chrome.xml
</suiteXmlFile>
</suiteXmlFiles>
<testFailureIgnore>
true
</testFailureIgnore>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.testng.xslt</groupId>
<artifactId>testng-xslt-plugin</artifactId>
<version>1.1</version>
<configuration>
<outputDir>C:/Users/windowspc/workspace/windows-project/target/testng-xslt-report</outputDir>
<showRuntimeTotals>true</showRuntimeTotals>
<sortTestCaseLinks>true</sortTestCaseLinks>
<testDetailsFilter>FAIL,PASS,SKIP,CONF</testDetailsFilter>
</configuration>
</plugin>
</plugins>
</reporting>
<pluginRepositories>
<pluginRepository>
<id>testng-xslt-plugin</id>
<url>http://uhftopic.com/maven/</url>
</pluginRepository>
</pluginRepositories>
...
...
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
<version>8.7</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.5.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
这个插件有一个新版本。它是 groupId/artifactId 已更改。以下是您可以使用的内容:
<groupId>org.reportyng</groupId>
<artifactId>reporty-ng</artifactId>
<version>1.2</version>
这是项目网站: https://github.com/cosminaru/reporty-ng/wiki/MavenPlugin
这是 github 存储库:https://github.com/cosminaru/reporty-ng 插件存储库现在在这里:
<pluginRepository>
<id>reporty-ng</id>
<url>https://github.com/cosminaru/reporty-ng/raw/master/dist/maven</url>
</pluginRepository>
蚂蚁和maven之间的主要区别是:
- Maven 使用约定优于配置
- 蚂蚁需要完全配置
这意味着使用 ant,您可以轻松地执行任何需要的操作,但是您必须编写 ant 脚本才能实现所需的内容。另一方面,使用 maven 对你的项目结构做出很多假设,如果你的项目结构符合这些假设:你可以做很多有用的工作,比如构建、测试、打包、生成文档,而你的 pom 中几乎没有任何东西.xml。
使用maven要理解的一件重要事情是生命周期的概念。maven定义了3个生命周期:清洁生命周期,默认生命周期和站点生命周期。
- 清洁
- :使用它来清洁任何以前构建的产品
- 默认:使用它来生成、测试、打包项目
- 站点:使用它来生成文档和报告
每个生命周期都是一系列阶段。此外,每个阶段都绑定了一个插件目标(插件目标在某些时候类似于蚂蚁目标(。生命周期的概念引入了插件执行之间的依赖关系(因此您不必指定它(。例如,maven 知道它必须在运行测试之前编译源代码和测试源代码。
在您的情况下:您需要生成一份报告,因此可以在站点-lyfe-循环期间完成。您需要根据测试结果生成报告,因此需要在生成报告之前运行测试。要做到这一点,只需运行这个maven命令:
mvn clean test site:site
此命令指示 maven 到:
- 清洁
- 任何以前的构建产品(清洁生命周期( 运行测试
- (默认生命周期((Maven知道它必须在运行测试之前进行编译(
- 使用文档生成一个站点,并且由于您已经定义了一个报告插件:它将在站点生成期间执行。
您将在目标/站点目录下找到您的报告。
另一件需要注意的事情:saxon 依赖项是插件的依赖项,而不是项目依赖项,因此您必须在 <plugin>
元素下指定它:
<plugin>
<groupId>org.testng.xslt</groupId>
<artifactId>testng-xslt-plugin</artifactId>
<version>1.1</version>
<configuration>
<outputDir>C:/Users/windowspc/workspace/windows-project/target/testng-xslt-report</outputDir>
<showRuntimeTotals>true</showRuntimeTotals>
<sortTestCaseLinks>true</sortTestCaseLinks>
<testDetailsFilter>FAIL,PASS,SKIP,CONF</testDetailsFilter>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
<version>8.7</version>
</dependency>
</dependencies>
</plugin>