2012-10-30 20 views
6

私のコードでJOptionPane.showInputDialog呼び出しを使用しています。 junitテストを実行すると、ウィンドウがポップアップします。 ポップアップを抑制する方法はありますか? Woldを助けて助けてくれますか? これを手伝ってください。junitテストでJOptionPane.showInputDialogを抑制する

答えて

2

私は知っています - この質問は古代です。しかし、たぶん誰かが同じ問題を抱えているかもしれません...

覚えておいてください:それはあなたのコードですね。だから、あなたは簡単にこれを行う

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

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

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

からリファクタリングすることができ、あなたはの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()); 
} 

すべてdone - JOptionPane.showInputDialog()の結果として起こるかもしれない面白いものをすべてシミュレートしたテストを追加する(nullを返す、予期しない値を返す...) gテストケースと異なる値

when(toTest.getValueFromDialog()).thenReturn(...);