2014-07-18 3 views
2

"실제"데이터로 코드를 테스트하고 싶습니다. 이 데이터는 읽기 전용 데이터이므로 패키지의 모든 테스트에서 다시 사용할 수 있습니다.대량의 데이터를로드하고 여러 테스트 케이스에서 사용하는 방법은 무엇입니까?

데이터로드가 길어로드 된 데이터를 모든 테스트 사례에서 스위트를 통해 다시 사용하고 싶습니다. 지금은 데이터를 정적 필드로 저장합니다. 이런 식으로 뭔가 :

Context.setData(new DataReader().getData(url)); 

은 무엇 (즉 데이터의 큰 부피를로드하고 몇 가지 테스트 케이스에서 사용)이 일을 더 "JUnit을"방법이 될 것입니다? 나는 명백한 결점을 가지고 있기 때문에 이것을 정말로 좋아하지 않는다. 예를 들어 누가 데이터를 초기화합니까?

다른 옵션에는 어떤 것이 있습니까?

+1

이것이 도움이 될 것이라고 생각합니다. http://stackoverflow.com/a/13285446/461499 – RobAu

답변

1

당신은 ParametrizedTests을 사용할 수 있습니다 :

import java.net.URL; 
import java.util.Arrays; 
import java.util.Collection; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.junit.runners.Parameterized; 
import org.junit.runners.Parameterized.Parameters; 

@RunWith(Parameterized.class) 
public class MyTest { 

    @Parameters 
    public static Collection<Object[]> data() { 
     return Arrays.asList(new Object[][] { 
       { new DataReader().getData(url) } 
      }); 
    } 

    private final Data data; 

    public MyTest(Data data) { 
     this.data = data; 
    } 

    @Test 
    public void test1() { 
     // 
    } 

    @Test 
    public void test2() { 
     // 
    } 
} 

@Parameters 주석이 방법은 한 번만 호출됩니다.

+0

감사합니다. @ gontard,하지만 이것은 내가 원하는 것이 아닙니다. 이것은 다른 데이터로 같은 논리를 테스트하는 것 같습니다. 하나의 데이터 세트로 다른 로직을 테스트하기 위해 다른 방법으로하고 싶습니다. 감사합니다. –

+0

네,'Parameterized' 테스트의 목적이 아닙니다. 그러나 모든 테스트에 동일한 매개 변수를 제공하여 예제에 적합합니다. – gontard

관련 문제