Vla*_*mir 11 java junit maven-2 unit-testing
我有以下测试结构:
public class WorkerServiceTest {
public class RaiseErrorTest extends AbstractDbUnitTest{
@Test
public void testSomething(){
}
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
这样做是因为我不想为每个扩展的测试用例创建一个单独的类文件AbstractDbUnitTest.
问题是mvn test没有从我的内部类运行测试.有没有办法如何配置Maven来运行这样的测试?当然我可以在父类中创建调用内部类方法的方法,但我想要一种更清晰的方法.
Pas*_*ent 11
是的,这是可能使用新的(当然,这不是新的了),Enclosed亚军(自JUnit的4.5),其运行的外部类的所有静态内部类.
要使用它,只需使用外部类注释@RunWith(Enclosed.class)并使内部类静态.
@RunWith(Enclosed.class)
public class WorkerServiceTest {
public static class RaiseErrorTest extends AbstractDbUnitTest{
@Test
public void testSomething(){
}
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
而mvn test将运行它们.
Car*_*Way 10
我解释(多一点)我发现的解决方案......
Maven(AFAIK)默认使用插件"maven-surefire-plugin"来运行你的maven项目中定义的任何测试.根据这个插件的文档,默认情况下,它排除了内部静态类所包含的测试(或至少它与我正在使用的版本 - 2.18.1).
所以我做的是放一个空的排除规则; 导致像这样的pom的构建部分:
<build>
<plugins>
...
<!-- ~~~~~~~~~~ SUREFIRE -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<excludes>
<exclude></exclude>
</excludes>
</configuration>
</plugin>
...
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)