我正在寻找一种方法来收集和发布这些 myResults
。但是 Junit @AfterClass
只支持静态方法。
如果我有一个父类(super class) 如果多个测试用例正在运行,它可能很难看。知道我该如何解决这个问题吗?如果我使用 after,我将无法获得 myresult 收集的完整输出
abstract class MainTestCase{
static List<String> myResults = new ArrayList();
@AfterClass public static void WrapUp() {
//code to write the myResults to text file goes here
System.out.println("Wrapping Up");
myResults.clear()
}
}
@RunWith(Theories.class)
public class TheoryAfterClassTest extends MainTestCase {
@DataPoint
public static String a = "a";
@DataPoint
public static String b = "bb";
@DataPoint
public static String c = "ccc";
@Theory
public void stringTest(String x, String y) {
myResults.add(x + " " + y);
System.out.println(x + " " + y);
}
}
最佳答案
放 List<String> myResults;
进入ThreadLocal
可能会解决问题,这就是您所有的并行测试用例如何拥有自己的 myResults
实例的方式.
static ThreadLocal<List<String>> myResults = new ThreadLocal<>();
@BeforeClass
public static void setUpClass() {
myResults.set(new ArrayList<String>());
}
// use it later in your code
@Test
public void myTestCase() {
myResults.get().add("result");
}
关于java - 如何清除 Junit 中提交的 afterClass 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16080223/