如何为Surefire Maven插件指定JUnit自定义运行器?

时间:2011-10-17 18:10:01

标签: maven junit surefire

假设我有一个junit自定义类加载器,它从文本文件中读取测试数据,并在运行时创建并运行测试。跑步者不使用测试类。

现在我想用surefire maven插件运行它。也就是说,我想将跑步者指定为surefirepom.xml插件“执行”的参数。

我能这样做吗?

3 个答案:

答案 0 :(得分:4)

不。据我所知,没有办法在maven-surefire-plugin中指定Runner类。但是,您应该能够创建一个Test-Class并使用@RunWith(YourRunner.class)让它与您的自定义运行器一起运行。

我认为这是因为Runner的预期用例是基于每个测试,而不是项目级别。您可以拥有一个混合使用各种Runners的项目,例如一些是基于Spring的,一些是并发的,一些是使用JUnit3运行的,一些是使用JUnit4等。

答案 1 :(得分:0)

根据您希望实现的目标,您可以使用自定义RunListener全局影响测试行为。以下是使用Maven Surefire插件配置它的方法:http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#Using_custom_listeners_and_reporters

(我对类似的问题发表了同样的回答,即:Globally setting a JUnit runner instead of @RunWith

答案 2 :(得分:0)

在我的项目中,我使用插件exec-maven-plugin

解决了相同的任务

我有自定义Runner,它使用特殊参数运行junit测试。我用maven命令执行我的跑步者:mvn test -Dparam1 = value1 -Dparam2 = value2 -Dparam3 = value3

在pom.xml中:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.5.0</version>
            <executions>
                <execution>
                    <phase>test</phase>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <classpathScope>test</classpathScope>
                        <mainClass>com.example.domain.MyMainClass</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>