2013-05-08 3 views
7

मेरे परीक्षण मामलों के लिए लगातार डीबग कॉन्फ़िगरेशन बनाने के बजाय, मैं अपने सभी जूनिट परीक्षणों में सामान्य रूप से कुछ तर्कों को सहेजने में सक्षम होना चाहता हूं, एक विशिष्ट परीक्षण पर राइट क्लिक करें, फिर उस एकल रन कॉन्फ़िगर को चलाएं। आईई मुझे एक एकल डीबग कॉन्फ़िगरेशन चाहिए जो वर्तमान चयनित परीक्षण केस पर तर्क के रूप में ले सकता है, इसके बजाय मुझे JUnit रन कॉन्फ़िगरेशन में हर बार इसे मैन्युअल रूप से निर्दिष्ट करने की आवश्यकता होती है। संवाद में मेरा एकमात्र विकल्प या तो एकल परीक्षा वर्ग निर्दिष्ट करने या प्रोजेक्ट में सभी परीक्षण चलाने के लिए प्रतीत होता है। नतीजतन, ग्रहण मेरे सभी परीक्षण मामलों के लिए दर्जनों रन कॉन्फ़िगरेशन के साथ बिखरा हुआ है।ग्रहण जूनिट रन कॉन्फ़िगरेशन जो वर्तमान चयनित टेस्ट क्लास को एक तर्क के रूप में लेता है?

एक विशिष्ट टेस्ट क्लास निर्दिष्ट करने के बजाय, मैं इसे this question में चलाने के लिए कक्षा के लिए $ {container_loc} या $ {resource_loc} जैसे चर निर्दिष्ट करना चाहता हूं। क्या एक्लिप्स में कोई चर है जो वर्तमान चयनित जावा क्लास को निर्दिष्ट करता है जिसे मैं संवाद में टेस्ट क्लास फ़ील्ड में रख सकता हूं?

लुसीन यूनिट परीक्षण चलाते समय यह एक विशिष्ट उदाहरण है जहां यह उपयोगी है। परीक्षणों को कस्टमाइज़ करने के लिए आप बहुत सारे तर्क निर्दिष्ट कर सकते हैं, जिनमें से कुछ -ea आवश्यक हैं। हर बार जब मैं ग्रहण में ल्यूसीन में एक विशिष्ट परीक्षण केस का परीक्षण करना चाहता हूं, तो मुझे ग्रहण डीबग कॉन्फ़िगरेशन संवाद में इन चरों को मैन्युअल रूप से सेटअप करना होगा: - /।

उत्तर

1

क्या आपने जुनीट में पैरामीटरेटेड टेस्ट देखा है? यहाँ एक उदाहरण है:

import org.junit.Assert; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.junit.runners.Parameterized; 
import org.junit.runners.Parameterized.Parameters; 

@RunWith(Parameterized.class) 
public class ParamTest { 
    @Parameters(name = "{index}: fib({0})={1}") 
    public static Iterable<Object[]> data() { 
     return Arrays.asList(new Object[][] { 
       { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } 
      }); 
    } 

    private int input; 
    private int expected; 

    public ParamTest(int input, int expected) { 
     this.input = input; 
     this.expected = expected; 
    } 

    @Test 
    public void test() { 
     Assert.assertEquals(expected, input); 
    } 
} 

तुम सिर्फ एक समय में एक परीक्षण चलाने के लिए आप के रूप में निजी चर का उपयोग कर सकते हैं:

public class MultipleTest { 
    private int x; 
    private int y; 

    public void test1(){ 
     Assert.assertEquals(x, y); 
    } 
    public void test2(){ 
     Assert.assertTrue(x >y); 
    } 

    public void args1(){ 
     x=10; y=1; 
    } 
    public void args2(){ 
     x=1;y=1; 
    } 
    public void args3(){ 
     x=1;y=10; 
    } 
    @Test 
    public void testArgs11(){ 
     args1(); 
     test1(); 
    } 
    @Test 
    public void testArgs21(){ 
     args2(); 
     test1(); 
    } 
    @Test 
    public void testArgs31(){ 
     args3(); 
     test1(); 
    } 
    @Test 
    public void testArgs12(){ 
     args1(); 
     test2(); 
    } 
    @Test 
    public void testArgs22(){ 
     args2(); 
     test2(); 
    } 
    @Test 
    public void testArgs32(){ 
     args3(); 
     test2(); 
    } 
} 
संबंधित मुद्दे