Maven surefire testng提供程序运行JUnit测试,但不报告结果

时间:2014-05-30 16:16:46

标签: java unit-testing maven junit testng

在我的项目中,我们同时拥有TestNG和JUnit(实际上是Spock)测试。所以我们需要运行两者,并从两者中获得结果。使用surefire提供商似乎很容易,所以我们这样做了:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.17</version>
            <configuration>
                <threadCount>1</threadCount>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-testng</artifactId>
                    <version>2.17</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.17</version>
                </dependency>
            </dependencies>
        </plugin>

但是,经过一段时间后,我发现junit测试运行了两次。这不好,因为我们有很多测试,我想限制它们运行的​​时间。

经过一番研究后,我发现surefire-testng提供程序运行了TestNG和JUnit测试。所以再一次看起来很简单 - 我删除了surefire-junit47提供商。

嗯,这也不是一个好的解决方案,因为结果是testng提供程序运行了junit测试,但是没有在target/surefire-reports/TEST*.xml中提供结果。我在那里只找到了TestNG的结果。

是否有任何解决方案只能运行一次测试,并报告结果?

1 个答案:

答案 0 :(得分:0)

我使用surefire-testng来运行junit测试,但是在同一次运行中没有任何testng测试。

我使用以下方法提取报告:

**/surefire-reports/*.xml

您可以将surefire-testng配置为包含或排除任何测试,也许您可​​以按模式排除junit测试,然后让junit47提供程序运行那些?

surefire-reports也可以配置为收集junit和/或testng报告。

后来的junit测试使用注释而不是命名约定。 testng似乎认识到这一点,但是surefire-reports的默认行为似乎只是通过命名约定来收集数据。

我仍然在junit测试中使用命名约定和注释(Test * / 测试单元和IT / * IT进行集成),这使我能够更好地控制surefire和failafe。 / p>

使用命名约定在surefire插件默认行为中包含测试,或者配置插件以运行特定测试并收集所需数据。