2012-10-30 12 views

Odpowiedz

2

Wiem - to pytanie jest starożytne. Ale może czasami ktoś będzie miał ten sam problem ...

Pamiętaj: To twój kod, prawda? Dzięki czemu można łatwo byłaby z

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

do

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

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

to zrobić, można napisać test szyderczy dala rzeczywistą wywołanie JOptionPane (Przykład wykorzystuje Mockito składni)

@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()); 
} 

Wszystko done - teraz dodaj testy symulujące wszystkie zabawne rzeczy, które mogą się wydarzyć w wyniku JOptionPane.showInputDialog() (zwracanie wartości null, zwracanie nieoczekiwanych wartości ...) przez proste dodanie g przypadków testowych i różnych wartości dla

when(toTest.getValueFromDialog()).thenReturn(...); 
Powiązane problemy