2012-10-30 12 views
6

में JOptionPane.showInputDialog को दबाएं। मैं अपने कोड में JOptionPane.showInputDialog कॉल का उपयोग कर रहा हूं। जब जूनिट परीक्षण चलते हैं तो यह खिड़की को पॉप करता है। क्या पॉप-अप को दबाने का कोई तरीका है? क्या यह मजाक कर रहा है? कृपया इस पर मेरी सहायता करें।जूनिट परीक्षण

उत्तर

2

मुझे पता है - यह सवाल प्राचीन है। लेकिन शायद कभी-कभी किसी को भी वही समस्या होगी ...

याद रखें: यह आपका कोड है, है ना? ताकि आप आसानी से से

public boolean myMethod() { 
    String value = "NOTHING"; 
    if(this.someCondition) { 
    value = JOptionPane.showInputDialog(...); 
    } 
    return "NOTHING".equals(value); 
} 

को
public boolean myMethod() { 
    String value = "NOTHING"; 
    if(this.someCondition) { 
    value = getValueFromDialog(); 
    } 
    return "NOTHING".equals(value); 
} 

protected getValueFromDialog() { 
    return JOptionPane.showInputDialog(...) 
} 

यह किया refactor कर सकते हैं, तो आप एक परीक्षण JOptionPane की वास्तविक मंगलाचरण दूर मजाक लिख सकते हैं (उदाहरण Mockito सिंटैक्स का उपयोग करता)

@Test 
public void test_myMethod() { 
    MyClass toTest = mock(MyClass.class); 

    //Call real method we want to test  
    when(toTest.myMethod()).doCallRealMethod(); 

    //Mock away JOptionPane 
    when(toTest.getValueFromDialog()).thenReturn("HELLO JUNIT"); 

    //Perform actual test code 
    assertFalse(toTest.myMethod()); 
} 

सभी किया - अब जॉइनपेन.शोइन इनपुट डियालॉग() (नल लौट रहा है, अप्रत्याशित मान लौटा रहा है ...) के परिणामस्वरूप हो सकता है कि सभी अजीब सामानों को सिमुलेट करने वाले परीक्षणों को जोड़ दें जी परीक्षण मामलों और

when(toTest.getValueFromDialog()).thenReturn(...); 
के लिए अलग-अलग मान