如何在单元测试中向@AfterClass方法添加一些代码,但不修改测试源代码并通过junit cmd运行它。 这是我的尝试,但它不会覆盖单元测试的@AfterClass。
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.Request;
import org.junit.AfterClass;
import org.junit.After;
import org.uni.DumpGenerator;
public class SingleJUnitTestRunner {
public static void main(String... args) throws ClassNotFoundException {
String classAndMethod = args[0];
Request request = Request.aClass(Class.forName(classAndMethod));
Result result = new JUnitCore().run(request);
}
@AfterClass
public static void afterClass() throws Exception, InterruptedException {
System.gc();
Thread.sleep(5000L);
DumpGenerator.dumpToFile("test", "afterRun");
}
}
然后我使用这个cmd: java -cp pathtojunit SingleJUnitTestRunner Mytest
但是后方法不起作用。 任何帮助! 提前致谢。
答案 0 :(得分:2)
@AfterClass
注释适用于测试用例,而不是测试运行器。您可以将它应用于您要运行的每个测试(或基类),也可以直接在main
函数中调用它:
public static void main(String... args) throws Exception, ClassNotFoundException {
String classAndMethod = args[0];
Request request = Request.aClass(Class.forName(classAndMethod));
Result result = new JUnitCore().run(request);
afterClass();
}