java – 用于配置@BeforeClass和@Before方法的模式

我现在有一种情况,我有类似以下的东西:

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.

看起来你可以使用Rules完全按照自己的意愿行事.特别是,看看ExternalResource rule

public class SomeTest {
    @Rule
    public MyTestRule myRule = new MyTestRule("myConfigFile.ini");
    ...
}

public class MyTestRule extends ExternalResource {
    ...
    protected void before() { ... }
    ...
}
点赞