그래서 다른 웹 사이트의 특정 속성을 평가하는 테스트를 실행하려고합니다. 실제 평가는 유료 호출 (pay-per-call) 리소스에 의해 처리되므로 리소스를 생성하는 횟수를 최소화하고 싶습니다. 또한 JUnit을 사용하여 더 큰 자동 테스트 스위트에 적합하도록해야합니다.JUnit에서 매개 변수별로 클래스를 한 번 인스턴스화하십시오.
지금까지 매개 변수화 된 테스트를 통해이 작업을 수행해 왔지만 각 테스트 메서드에 대해 새 인스턴스를 인스턴스화한다는 사실을 알게되었습니다.
이제 리소스를 테스트 클래스의 생성자로 공급되는 각 매개 변수에 대해 한 번만 만들 수있는 방법을 찾으려고합니다. @BeforeClass는 한 번만 수행하고 @Before는 각 테스트 전에 한 번 수행합니다.
내가 찾은 모든 도움말 항목은 모든 테스트에서 값 비싼 리소스를 한 번 만들었지 만,이 경우에는 새로운 매개 변수 집합마다 리소스를 다시 만들어야합니다.
Constructing resource for url1
test1
test2
Constructing resource for url2
test1
test2
모든 아이디어/솔루션 :
@RunWith(Parameterized.class)
public class MyTestClass {
private static Resource expensiveToCreateResource;
public MyTestClass(String url) {
System.out.println("Constructing resource for " + url);
expensiveToCreateResource = new Resource(url); //This is getting created 4x, which is wrong
}
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {{"url1"},{"url2"}});
}
@Test
public test1() {
expensiveToCreateResource.method1();
System.out.println("test1");
}
@Test
public test2() {
expensiveToCreateResource.method2();
System.out.println("test2");
}
}
가 출력을 생성합니다 :
는 더 나은 내가 무엇을 찾고 보여주기 위해 다음과 같은 몇 가지 예제 코드/출력을 작성했습니다? 감사.