Điểm dữ liệu áp dụng cho lớp học. Nếu bạn có một phương thức @Theory lấy một int, và bạn có một DataPoint là một mảng ints, thì nó sẽ được gọi với 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);
}
}
này gọi test1 với 45 & 46, và test2 với 45 & 46. Nó kêu gọi testString1 với "foobar" và "Barbar" và testString2 với "foobar" và "Barbar".
Nếu bạn thực sự muốn sử dụng bộ dữ liệu khác nhau cho các lý thuyết khác nhau, bạn có thể quấn các dữ liệu trong một lớp học riêng:
@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);
}
}
này gọi test1 với 45 và test2 với 46. Công trình này, nhưng trong tôi ý kiến, nó che khuất mã, và nó có thể là một giải pháp tốt hơn để chia lớp Test thành hai lớp.
Nguồn
2011-09-26 14:17:51
@Mathew Cảm ơn bạn đã trả lời. Vì vậy, không có tính năng ràng buộc như vậy. Sẽ sử dụng gói trong lớp tư nhân trong thời gian này. Nhưng nó vẫn không thanh lịch. Tôi vẫn không hiểu tại sao DataPoints được gắn vào lớp học? Chúng có ý nghĩa tốt hơn ở cấp độ phương pháp. –
Ý tưởng là bạn có một số điểm dữ liệu và bạn có thể thử nghiệm một số lý thuyết: vì bạn cần một số phương pháp thử nghiệm. Nếu bạn hài lòng với câu trả lời, bạn có thể chấp nhận nó không? –
+1 để tách lớp Bài kiểm tra thành hai lớp. Nếu test1 và test2 cần các tập dữ liệu khác nhau để vượt qua và có ý nghĩa, thì về cơ bản chúng đang thử nghiệm các hành vi khác nhau và có thể tách biệt một cách hợp lý. –