2014-06-11 2 views
4

JUnit 4.x의 매개 변수화 된 기능에 익숙하며 문제가 있습니다. 매개 변수화 된 테스트는 3 개의 정수 배열로 구성되어 있으며이를 선언하는 방법에 어려움을 겪고 있습니다. 내가 아래에있는 것은 런타임 오류가 발생하는배열을 매개 변수가있는 JUnit에 전달

@RunWith(Parameterized.class) 
public class MyArrayTest { 
    private Integer[] inputList1; 
    private Integer[] inputList2; 
    private Integer[] expectedList; 

    public MyArrayTest(Integer[] li1, Integer[] li2, Integer[] expected) { 
     // ========> Runtime error happens here. <========= 
     this.inputList1 = li1; 
     this.inputList2 = li2; 
     this.expectedList = expected; 
    } 

    @Parameterized.Parameters 
    public static Collection testCases() { 
     return Arrays.asList(new Object[][][] { 
      {{1,1,1}, {2,2,2}, {3,3,3}}, 
      {{2,2,2}, {3,3,3}, {4,4,4}} 
     }); 
    } 

    @Test 
    public void testGeneral() { 
     // Do some test with this.inputList1, this.inputList2, 
     // and verify with this.expectedList 
     // I am not even getting here yet. 
    } 
} 

나는 당신의 도움이 제대로 내 시험을 세 가지 배열을 전달하는 감사 :

testGeneral[0] caused an ERROR: argument type mismatch 
    argument type mismatch 
    java.lang.IllegalArgumentException 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
testGeneral[1] caused an ERROR: argument type mismatch 
    argument type mismatch 
    java.lang.IllegalArgumentException 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 

가 여기 내 코드입니다.

답변

5

왜 실패하는지는 객체 유형을 전달하는 반면 테스트에서 정수 배열이 필요하기 때문입니다. 그래서 타입을 확장하고 있습니다. 사용해보기 :

@Parameterized.Parameters 
    public static Collection testCases() { 
     return Arrays.asList(new Integer[][][] { 
      {{1,1,1}, {2,2,2}, {3,3,3}}, 
      {{2,2,2}, {3,3,3}, {4,4,4}} 
     }); 
    } 
+0

너무 바보 같아요. 고맙습니다. –

+0

하하 우리 모두 실수합니다. – Kode

관련 문제