1 सवाल: picocli: यह JUnit परीक्षण विफल क्यों होता है?

पर बनाया गया सवाल Tue, Apr 9, 2019 12:00 AM

टेस्ट एक JUnit परीक्षण त्रुटियों को चलाने की कोशिश कर सही ढंग से नहीं चलेगा

package picocli;

import picocli.CommandLine.Option;

public class ComparatorRunnerConfig {

      @Option(names = {"-rc", "--report-class"}, required = false,
              description = "define report")
      private String report;

      public String getReport() {
            return report;
      }
}

मेरा JUnit परीक्षण:

package picocli;

import static org.junit.Assert.*;
import org.junit.Test;

public class ConfigurationTest {

    @Test
    public void testBasicConfigOptions() {
        String args = "-rc BlahBlah";
        ComparatorRunnerConfig mfc = new ComparatorRunnerConfig();
        new CommandLine(mfc).parse(args);

        String myTestValue = mfc.getReport();
        assertEquals(myTestValue, "BlahBlah");
    }
}

परीक्षण विफल रहता है।

    
- 2
  1. @ RemkoPopma ओह! यह इंगित करने के लिए धन्यवाद।
    2019-04-09 18: 21: 31Z
1 उत्तर                              1                         

समस्या यह है कि परीक्षण में एक सूक्ष्म बग है: इरादा दो तर्कों को पारित करने का है: विकल्प "-rc" और इसका विकल्प पैरामीटर "BlahBlah" है, लेकिन परीक्षण वास्तव में क्या है पास नहीं है एक तर्क एक एम्बेडेड स्थान के साथ "-rc BlahBlah"

Picocli इस इनपुट से मेल नहीं खाएगा और एक अपवाद को फेंक देगा (शायद त्रुटि संदेश "अज्ञात विकल्प-आर्केड ब्लाहबला" जैसा कुछ कहता है, लेकिन मैं अपने पीसी से दूर हूं, इसलिए सत्यापित नहीं कर सकता)।

इसका समाधान परीक्षण को या तो इस में बदलना है:

String[] args = "-rc BlahBlah".split(" ");

या यह:

String[] args = new String[] {"-rc", "BlahBlah"};

परीक्षण में यह बग वास्तव में एक काफी सामान्य गलती है और मैंने इस गलती को कुछ समय के लिए खुद किया है। : -)

एक साइड-नोट के रूप में: आप इसके लिए समस्याओं के निवारण में सहायता के लिए picocli के ट्रेसिंग सुविधा का उपयोग कर सकते हैं: सिस्टम प्रॉपर्टी सेट करके -Dpicocli.trace=DEBUG.

    
1
2019-04-09 18: 19: 01Z
  1. @ नील mc feely ने आपके प्रश्न का उत्तर दिया?
    2019-04-15 15: 06: 41Z
स्रोत रखा गया यहाँ