我现在遇到的情况如下:
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中都这样做。如何组织这样的跑步者?
答案 0 :(得分:2)
我不太明白为什么你在这里需要自定义Runner
。
您似乎可以使用Rule
s完全按照自己的意愿行事。请特别注意ExternalResource
rule:
public class SomeTest {
@Rule
public MyTestRule myRule = new MyTestRule("myConfigFile.ini");
...
}
public class MyTestRule extends ExternalResource {
...
protected void before() { ... }
...
}