데이터 포인트가 클래스에 적용됩니다. int를 취하는 @Theory 메서드가 있고 int 배열 인 DataPoint가 있으면 int로 호출됩니다.
@RunWith(Theories.class)
public class TheoryTest {
@DataPoint public static int input1 = 45;
@DataPoint public static int input2 = 46;
@DataPoints public static String[] inputs = new String[] { "foobar", "barbar" };
@Theory public void testString1(String input) {
System.out.println("testString1 input=" + input);
}
@Theory public void testString2(String input) {
System.out.println("testString2 input=" + input);
}
@Theory public void test1(int input) {
System.out.println("test1 input=" + input);
}
@Theory public void test2(int input) {
System.out.println("test2 input=" + input);
}
}
이 45 & 46 그것은 "는 foobar"및 "barbar"와 "는 foobar"및 "barbar"와 함께 testString2 testString1 호출 45 & 46 TEST1 및 TEST2 부른다.
당신은 정말, 당신은 개인 클래스에 데이터를 래핑 수있는 다른 이론에 대해 서로 다른 데이터 세트를 사용하려면 :
@RunWith(Theories.class)
public class TheoryTest {
public static class I1 { int i; public I1(int i) { this.i = i;} }
public static class I2 { int i; public I2(int i) { this.i = i;} }
@DataPoint public static I1 input1 = new I1(45);
@DataPoint public static I2 input2 = new I2(46);
@Theory
public void test1(I1 input) {
System.out.println("test1 input=" + input.i);
}
@Theory
public void test2(I2 input) {
System.out.println("test2 input=" + input.i);
}
}
이이 작품 (46)와 45 TEST1 및 TEST2가 호출하지만 내 의견은 코드를 모호하게 만들고 Test 클래스를 두 클래스로 분리하는 더 좋은 해결책 일 수 있습니다.
@Mathew 답장을 보내 주셔서 감사합니다. 따라서 바인딩 기능은 없습니다. 당분간은 개인 클래스의 래핑을 사용합니다. 그러나 여전히 우아하지 않습니다. DataPoint가 클래스에 연결된 이유를 아직도 이해할 수 없습니까? 그들은 방법 수준에서 더 잘 이해합니다. –
아이디어는 당신이 많은 데이터 포인트를 가지고 있고, 많은 이론을 테스트 할 수 있다는 것입니다 : 당신은 많은 테스트 방법이 필요합니다. 당신이 대답에 만족한다면, 제발 받아 들여 주시겠습니까? –
+1 Test 클래스를 두 개의 클래스로 나누는 경우. test1과 test2가 서로 다른 데이터 집합을 전달하고 이해할 필요가 있다면 본질적으로 다른 동작을 테스트하고 논리적으로 분리 할 수 있습니다. –