Как очистить экземпляр, поданный afterClass в Junit?
Я ищу способ собрать и опубликовать эти myResults
, Но джунит @AfterClass
поддерживает только статический метод.
Если у меня суперкласс. Если запущено несколько тестов, это может быть ужасно. Любая идея, как я могу решить это? Если я использую после, я не получу полный вывод, собранный 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);
}
}
1 ответ
Решение
Ввод 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");
}