gpt4 book ai didi

junit - 在 junit 测试中抑制 JOptionPane.showInputDialog

转载 作者:行者123 更新时间:2023-12-02 02:51:26 24 4
gpt4 key购买 nike

我在代码中使用 JOptionPane.showInputDialog 调用。当 junit 测试运行时,它会弹出窗口。有办法抑制弹窗吗?Wold mock 有帮助吗?请帮我解决这个问题。

最佳答案

我知道 - 这个问题很古老。但也许有时有人会遇到同样的问题......

记住:这是你的代码,不是吗?所以你可以轻松地重构

 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(...);

关于junit - 在 junit 测试中抑制 JOptionPane.showInputDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13141744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com