我现在有一种情况,我有类似以下的东西:
public class SomeTest extends AbstractMyTest {
@Test
public void something() {
//Test something, related to the AbstractMyTest config
}
@Override
public String getConfiguration() {
return "myConfigFile.ini";
}
}
public abstract class AbstractMyTest {
@Before
public void before() {
//Do some init stuff that calls getConfiguration()...
}
abstract String getConfiguration();
}
现在,我正在考虑摆脱AbstractMyTest类,并具有如下内容:
@MyTestConfig(value="myConfigFile.ini")
public class SomeTest {
@Test
public void something() {
//Test something, related to the AbstractMyTest config
}
}
所以我可能有一个自定义Runner来完成AbstractMyTest类负责的工作.我希望能够以@BeforeClass或@Before的方式做一些事情,而不必在每个TestClass中都这样做.如何组织这样的跑步者?
最佳答案 我不太明白为什么你需要一个自定义的Runner.
看起来你可以使用Rule
s完全按照自己的意愿行事.特别是,看看ExternalResource
rule:
public class SomeTest {
@Rule
public MyTestRule myRule = new MyTestRule("myConfigFile.ini");
...
}
public class MyTestRule extends ExternalResource {
...
protected void before() { ... }
...
}