3

これらを収集して公開する方法を探していますmyResults。しかし、Junit@AfterClassは static メソッドしかサポートしていません。

私がスーパークラスを持っている場合 複数のテストケースが実行されている場合、それは見苦しいものになる可能性があります。どうすればこれを解決できますか?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);
  }      
}
4

1 に答える 1

2

に入れると問題が解決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");
}
于 2013-04-19T07:32:12.007 に答える