使用类级别的@RunWith注释指定的Surefire提供程序和运行程序之间的区别

时间:2016-08-28 10:45:40

标签: java junit4 maven-surefire-plugin

根据Surefire插件的文档,我们可以指定提供商为JUnit 4JUnit-47和其他人。

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

假设我有一个如下所述的课程:

@RunWith(PowerMockRunner.class)
public class MyListener{

    @Test
    public void testProp() {

    }
}

当我们运行maven surefire时,是否会使用junit47runnerPowerMockRunner运行测试用例?

1 个答案:

答案 0 :(得分:0)

在你的情况下@RunWith是一个JUnit注释(符合你的xml配置中设置的内容,所以你可以放弃那个依赖xml配置部分而不用担心关于那个)。

JUnit跑步者将依次运行你的PowerMockRunner。因此,您的powermock将被启用,但您仍然可以使用JUnit之类的东西,如@Rule

此外,自junit 4.7以来,我们建议您使用JUnit powermock rule代替@RunWith(PowerMockRunner.class)

-

引用surefire doc。对于问题的一般部分。

  

在某些情况下,可能需要手动覆盖这样的选择。这可以通过将所需的提供程序添加为surefire-plugin的依赖项来完成。

这意味着如果设置得当,则可以使用surefire配置。