在junit测试中抑制JOptionPane.showInputDialog
我正在使用在junit测试中抑制JOptionPane.showInputDialog,junit,Junit,我正在使用JOptionPane.showInputDialog调用我的代码。 当junit测试运行时,它会弹出窗口。 有没有办法抑制弹出窗口? 嘲笑它会有帮助吗? 请在这方面帮助我。我知道-这个问题很古老。但也许有些人也会有同样的问题 记住:这是你的代码,不是吗?因此,您可以轻松地从 public boolean myMethod() { String value = "NOTHING"; if(this.someCondition) { value = JOptionPan
JOptionPane.showInputDialog
调用我的代码。
当junit测试运行时,它会弹出窗口。
有没有办法抑制弹出窗口?
嘲笑它会有帮助吗?
请在这方面帮助我。我知道-这个问题很古老。但也许有些人也会有同样的问题 记住:这是你的代码,不是吗?因此,您可以轻松地从
public boolean myMethod() {
String value = "NOTHING";
if(this.someCondition) {
value = JOptionPane.showInputDialog(...);
}
return "NOTHING".equals(value);
}
到
完成后,您可以编写一个模拟JOptionPane实际调用的测试(示例使用语法)
全部完成-现在添加测试,模拟由于JOptionPane.showInputDialog()可能发生的所有有趣的事情(返回null,返回意外值…),只需添加测试用例和不同的值即可
when(toTest.getValueFromDialog()).thenReturn(...);
@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(...);