我正在尝试使用JUnit运行程序Enclosed,以便尝试改进我的一些测试的组织.目前我正在努力研究如何在内部类之间共享一些设置.
尝试第一个:
@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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有人向Meggan问好.如果我更新内部类以扩展外部类,那么我得到以下内容:
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)
Run Code Online (Sandbox Code Playgroud)
Gon*_*heu 17
封闭的跑步者内部作为套件工作,也就是说,它将类作为测试用例运行.由于封闭的跑步者忽略了Junit 4.12抽象内部类.
那说共享设置的方法是创建一个包含它的抽象类(@Before,@ Aftert):
@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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您甚至可以为每个子类声明自定义运行程序.
| 归档时间: |
|
| 查看次数: |
2257 次 |
| 最近记录: |