2012-02-09 5 views
3

동일한 시험 방법은 서로 다른 데이터를 여러 번 실행 매개 변수를 JUnit 테스트를 실행하는 좋은 가능성이있다 . 거기에 어떤 알려진 해결 방법이 있습니까?프리미티브가 아닌 매개 변수로 매개 변수화 된 JUnit 테스트? <a href="http://junit.org/apidocs/org/junit/runners/Parameterized.html" rel="nofollow">http://junit.org/apidocs/org/junit/runners/Parameterized.html</a></p> <p>불행하게도, 단지 기본 매개 변수 또는 문자열 있지만 개체를 ​​사용하는 것이 가능 보인다 여기에 설명 된대로

+0

는이 문제에 대한 해결책을 파악 했습니까? –

답변

7

@Parameters 주석을 사용하는 data() 메서드 유형은 List<Object[]>이므로 모든 개체를 넣을 수 있습니다.

에 통과하기가 예를 들면, Money 객체, 배열이 될 것 목록으로 변환 :

{{새 돈 (26, "CHF")}, {새 돈 (12 , "USD")}}

테스트 클래스의 생성자는 Money 개체를 인수로 가져와야합니다.

0

사용 JUnitParams 대신 ...

+0

링크를 더 이상 사용할 수 없습니다. –

0

junitparams.googlecode.com 최근 내가 zohhak 프로젝트를 시작했다. 그것은 당신이 작성할 수 있습니다 :

@TestWith({ 
    "25 USD, 7", 
    "38 GBP, 2", 
    "null, 0" 
}) 
public void testMethod(Money money, int anotherParameter) { 
    ... 
} 
0

사용 목적은 Junit와 @Parameters를 사용하는 것도 가능합니다.

예 : -

@RunWith(Parameterized.class) 
public class TestParameter { 

@Parameter(value=0) 
public int expected; 

@Parameter(value=1) 
public int first; 

@Parameter(value=2) 
public int second; 
private Calculator myCalculator; 


@Parameters(name = "Test : {index} : add({1}+{2})= Expecting {0}")//name will be shared among all tests 
public static Collection addNumbers() { 
    return Arrays.asList(new Integer[][] { { 3, 2, 1 }, { 5, 2, 3 }, { 9, 8, 1 }, { 200, 50, 150 } }); 
} 
@Test 
public void testAddWithParameters() { 
    myCalculator = new Calculator(); 
    System.out.println(first + " & " + second + " Expected = " + expected); 
    assertEquals(expected, myCalculator.Add(first, second)); 
} 

}