डेटापॉइंट कक्षा पर लागू करने के लिए कैसे बाध्य करें। यदि आपके पास @ थ्योरी विधि है जो एक int लेती है, और आपके पास डेटापॉइंट है जो इंक की एक सरणी है, तो इसे 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 और यह काम करता है कहता है, लेकिन में मेरी राय, यह कोड को अस्पष्ट करता है, और टेस्ट क्लास को दो वर्गों में विभाजित करने का बेहतर समाधान हो सकता है।
स्रोत
2011-09-26 14:17:51
@Mathew उत्तर के लिए धन्यवाद। तो इस तरह कोई बाध्यकारी सुविधा नहीं है। समय के लिए निजी कक्षा में रैपिंग का उपयोग करेंगे। लेकिन यह अभी भी सुरुचिपूर्ण नहीं है। मुझे अभी भी समझ में नहीं आता कि क्लास से डाटापॉइंट क्यों जुड़े हुए हैं? वे विधि स्तर पर बेहतर समझते हैं। –
विचार यह है कि आपके पास कई डेटा पॉइंट हैं, और आप कई सिद्धांतों का परीक्षण कर सकते हैं: इसके लिए आपको कई परीक्षण विधियों की आवश्यकता है। अगर आप उत्तर से खुश हैं, तो क्या आप इसे स्वीकार कर सकते हैं? टेस्ट क्लास को दो वर्गों में विभाजित करने के लिए –
+1। यदि test1 और test2 को पास करने और समझने के लिए अलग-अलग डेटा सेट की आवश्यकता है, तो अनिवार्य रूप से वे विभिन्न व्यवहारों का परीक्षण कर रहे हैं और तर्कसंगत रूप से अलग हो सकते हैं। –