Java JUnit封闭式运行程序和共享设置
我正在使用JUnitJava JUnit封闭式运行程序和共享设置,java,junit,Java,Junit,我正在使用JUnit封闭的运行程序进行实验,以尝试改进我的一些测试的组织。目前,我正在尝试解决如何在内部类之间共享一些设置 尝试第一种方法: @RunWith(Enclosed.class) public class EnclosedTest { @Before public void printSomething() { System.out.println("Helllooo Meggan"); } public static class
封闭的
运行程序进行实验,以尝试改进我的一些测试的组织。目前,我正在尝试解决如何在内部类之间共享一些设置
尝试第一种方法:
@RunWith(Enclosed.class)
public class EnclosedTest {
@Before
public void printSomething() {
System.out.println("Helllooo Meggan");
}
public static class FirstTest {
@Test
public void assertThatSomethingIsTrue() {
assertThat(true, is(true));
}
}
public static class SecondTest {
@Test
public void assertThatSomethingIsFalse() {
assertThat(false, is(false));
}
}
}
不幸的是,没有人向梅根问好。如果我更新一个内部类来扩展外部类,那么我会得到以下结果:
java.lang.Exception: class 'org.scratch.EnclosedTest$FirstTest' (possibly indirectly) contains itself as a SuiteClass
at org.junit.runners.model.InitializationError.<init>(InitializationError.java:32)
java.lang.Exception:类“org.scratch.EnclosedTest$FirstTest”(可能间接)将自身包含为SuiteClass
位于org.junit.runners.model.InitializationError。(InitializationError.java:32)
在尝试在内部测试类之间共享设置时,是否有一个特定的附带的习惯用法?我希望它能像运行程序一样简单。运行程序在内部作为测试用例运行,也就是说,它将类作为测试用例运行。由于JUnit4.12抽象内部类被封闭的运行程序忽略
也就是说,共享设置的方法是创建一个包含它的抽象类(@Before,@After):
请注意,您甚至可以为每个子类声明自定义运行器
@RunWith(Enclosed.class)
public class EnclosedTest {
abstract public static class SharedSetUp {
@Before
public void printSomething() {
System.out.println("Helllooo Meggan");
}
}
public static class FirstTest extends SharedSetUp {
@Test
public void assertThatSomethingIsTrue() {
assertThat(true, is(true));
}
}
public static class SecondTest extends SharedSetUp {
@Test
public void assertThatSomethingIsFalse() {
assertThat(false, is(false));
}
}
}