JUnit4运行某种方法之后的方法?

时间:2013-11-16 20:30:32

标签: java junit4

我有一个不是常规测试方法的方法。这是一种清理方法。我想在一些方法之后运行它(一些方法不是测试方法,但是从一些测试方法调用)。

如何使用JUnit4做到这一点?

PS:After和AfterClass不是一个选择。我想在“一些”非测试方法之后运行一个方法(在测试方法中调用一些方法)。

3 个答案:

答案 0 :(得分:0)

你试过@ AfterClass和@ After@Before@BeforeClass

对于@ AfterClass的情况,您的方法应该是静态的。 在这些情况下,您的方法将在所有测试之前启动一次。

检查此链接。 junit-beforeclass-and-afterclass-behavior-in-case-of-multiple-test-cases

答案 1 :(得分:0)

如果您使用Spring,则需要手动或通过AOP调用这些方法。

答案 2 :(得分:0)

你可以使用TestWatcher来听取测试结束的时间,&检查测试名称以查看是否应该运行您的代码。 E.g:

@Rule
public TestRule runFooSomtimes = new TestWatcher() {

    public void foo() {
      //do stuff here
    }

    List<String> methodsToCheck = new ArrayList<String>() {{
        add("testMethodOne");
    }}

    @Override
    protected void finished(Description description) {
        if(methodsToCheck.contains(description.getMethodName())) {
            foo();
        }
    }
};

(原谅任何错误,此刻远离IDE,但应该提出一个想法。)