0

早些时候我使用 build.xml (ant) 来运行我的测试用例,但现在我使用 pom.xml (maven) 来运行测试用例。
当我有 ant 时,我能够获得 testng-xslt 报告,但在阅读了许多博客和教程后,我无法通过 pom 生成。我想调查有什么区别,我看到我的类路径中有 saxon.jar,但 pom.xml 中缺少它,所以我添加了一个依赖项。我注意到我没有在 pom.xml 中指定 .xml 路径的第二件事(我不知道在 pom 中添加它的位置)。我在这里同时提供了 pom.xml 和 build.xml,请查看两者并让我知道我错过了通过 pom.xml 生成 testng-xslt 报告的内容,但它存在于 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:\automation\windowsproject\zookeeper\lib\saxon-8.7.jar">
                </classpath>
            </xslt>
    </target> 

pom.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>
4

1 回答 1

0

这个插件有一个新版本。它的 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>

ant 和 maven 的主要区别在于:

  • maven 使用约定优于配置
  • ant 需要完全配置

这意味着使用 ant 你可以很容易地做任何你需要的事情,但是你必须编写 ant 脚本来实现你所需要的。另一方面,maven 对您的项目结构做出了很多假设,如果您的项目结构符合这些假设:您可以做很多有用的工作,例如构建、测试、打包、生成文档,而您的 pom 中几乎没有任何内容。 xml。

使用 maven 要理解的一件重要事情是生命周期的概念。maven 定义了 3 个生命周期:clean-life-cycle、default-life-cycle 和 site-life-cycle。

  • 清洁:用它来清洁任何以前构建的产品
  • 默认值:使用它来构建、测试、打包您的项目
  • 站点:使用它来生成文档和报告

每个生命周期都是一系列的阶段。另外,每个阶段都绑定了一个插件目标(插件目标在某些时候类似于 ant 目标)。生命周期的概念引入了插件执行之间的依赖关系(因此您不必指定它)。例如,maven 知道它必须在运行测试之前编译源代码和测试源代码。

在您的情况下:您需要生成报告,因此可以在站点生命周期中完成。您需要根据测试结果生成报告,因此您需要在生成报告之前运行测试。为此,只需运行以下 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>
于 2013-09-27T13:01:07.790 回答