java - 如何清除 Junit 中提交的 afterClass 实例?

标签 java junit theory

我正在寻找一种方法来收集和发布这些 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/

相关文章:

java - Spring Integration EnableIntegrationManagement 加上 MetricRegistry

java - 预期会引发java.lang.IllegalArgumentException,但未引发任何异常

java - 如何在 POM 包上使用 Sure-fire 运行测试?

math - 理论:采样定理和奈奎斯特频率

java - 不理解Java中的一些基本编译错误

JavaFX WebEngine 生成 StringIndexOutOfBoundsException,出了什么问题?

java - CardLayout 在 Windows 上无法正确呈现

Android Mockito 太多实际调用

algorithm - 最大流量和最大流量有什么区别?

php - 使用自定义对象创建接口(interface)函数