有一种称为NestedRunner的方法,用于在嵌套配置中运行普通的旧Java类。
测试与@RunWith(NestedRunner.class)开始,这里要说的是,我发现的例子:
@RunWith(NestedRunner.class)
public class ListTest {
// inner class for sharing common context
public class WithArrayList {
// some context for these tests
ArrayList<String> list = new ArrayList<String>();
public class WhenEmpty {
@Test
public void itIsEmpty() {
assertTrue(list.isEmpty());
}
public class AfterAddingAnElement {
// some more context for these tests
String element = "Element";
// you can use instance initializer to initialize your context
// it will be run once per test
{
// the list is still empty in here
assertTrue(list.isEmpty());
list.add(element);
}
@Test
public void itIsNotEmpty() {
assertFalse(list.isEmpty());
}
@Test
public void itContainsTheElement() {
assertTrue(list.contains(element));
}
@Test
public void addingAnotherElementIncreasesSize() {
int sizeBeforeAdding = list.size();
list.add("AnotherElement");
assertThat(list.size(), is(greaterThan(sizeBeforeAdding)));
}
@Test
public void listSizeIsStillOne() {
assertThat(list.size(), is(equalTo(1)));
}
}
@Test
public void isStillEmpty() {
assertTrue(list.isEmpty());
}
}
public class WithTwoElements {
@Before
public void init() {
list.add("Element1");
list.add("Element2");
}
@Test
public void hasSizeOfTwo() {
assertThat(list.size(), is(equalTo(2)));
}
}
}
}
这里是source进一步信息
这个亚军是嵌套运行测试类。它不提供同时应用许多跑步者的选项。 @RunWith注释需要添加像@InnerRunners(GuiceJUnitRunner,ParameterizedRunner,HierarchicalcontextRunner)'来标识嵌套的参赛者。这不适用于您链接到的NestedRunner。 –