정적 및 비 정적 필드가있는 클래스가 있습니다. JUnit 테스트를 위해이 클래스를 매개 변수화한다. 이제 테스트간에 정적 필드를 공유하는지 의문의 여지가 있습니다. @Parameterized 주석이 동일한 클래스의 인스턴스를 여러 개 만드는 데 도움이된다면 정적 필드가 테스트 사이에 공유된다고 생각하지만 다른 클래스 (예 : 백그라운드에서 클래스 이름에 접미어를 추가)를 만들면 모든 클래스에 그것의 자신의 정적 필드. 나는이 코드를 테스트하기 위해 노력했지만 성공하지 : 첫째클래스를 정적화할 때 클래스를 매개 변수화 할 때 테스트간에 공유합니까?
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
import java.util.List;
@RunWith(Parameterized.class)
public class Parametrized {
public static String field1;
public String field2;
public int slp;
public Parametrized (String str1, String str2, int slp) {
this.field1 = str1;
this.field2 = str2;
this.slp = slp;
}
@Parameterized.Parameters()
public static List<Object[]> data() {
return Arrays.asList(new Object[][] {{"1_static", "1_nonstatic", 5000}, {"2_static", "2_nonstatic", 2000}});
}
@Test
public void test_static() throws InterruptedException {
System.out.println(field1);
Thread.sleep(this.slp);
System.out.println(field2);
System.out.println(field1);
}
}
, 나는 테스트가 병렬로 실행되지 않는 것으로 나타났습니다 만, 연이어 : 나는 그 @Parameterized을 사용하는 주요 포인트라고 생각 - 테스트를 병렬로 실행합니다.
둘째로, 정적 필드가 공유되는지 여부를 찾는 데 도움이되지 못해 하나씩 실행되기 때문에.
Maven의 SureFire 플러그인을 사용하여 테스트를 실행하면 어떻게 작동하는지도 명확하지 않습니다. 정적 인 객체를 각각 가지고있는 백그라운드에서 매개 변수화 된 클래스의 다른 복사본을 생성합니까? – user6419217