我在代码中使用JOptionPane.showInputDialog
调用。
当junit测试运行时,它会弹出窗口。
有没有办法压制弹出窗口?
Wold嘲笑它有帮助吗?
请帮帮我。
答案 0 :(得分: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(...)
}
这样做了,您可以编写一个模拟实际调用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());
}
全部完成 - 现在添加测试,模拟由于JOptionPane.showInputDialog()(返回null,返回意外值...)而可能发生的所有有趣的事情,只需添加测试用例和
的不同值when(toTest.getValueFromDialog()).thenReturn(...);