我是JUnit的新手,我得到了一个示例java项目,我需要为所有方法编写单元测试。 不幸的是,代码设计很差,一些方法是从UI完成的。此外,某些方法会弹出消息框而不返回返回值。
我有两个问题:首先,在不修改现有代码的情况下,有没有一种方法可以抑制消息框,而不是每次运行单元测试时都不按Enter键?
第二个问题:测试函数可以期待一个消息框,并在字符串内容上声明失败\成功吗?
我感谢任何帮助,我知道最好的解决方案是修复代码本身 - 将BusinessLogic与UI完全分开并测试预期结果,或者即使消息框以某种方式强制使用模态消息框(如简单的对话框) )但不幸的是,我不允许在代码中更改任何内容。
谢谢:)
尼里
答案 0 :(得分:2)
如果只允许您编辑代码,有各种各样的方法可以启动,所以我的第一种方法是查看是否可以放宽此限制,并阅读Working Effectively With Legacy Code。
如果没有尝试使用像FEST-Swing这样的GUI测试框架来检查消息框的内容是否符合预期。
答案 1 :(得分:0)
unfortunately I am not allowed to change anything in the code.
关于如何使用JUnit自动化Swing测试,Google上有各种各样的东西。不幸的是,测试时无法解决这个问题。
答案 2 :(得分:0)
不允许更改代码,你说?首先想到看看JMockit,当你受到代码的严格约束时,它会真正开辟出许多可能性,而这些代码并没有过多关注应该如何测试。它应该使您能够在不修改任何代码的情况下,在测试运行时替换您烦人的部分的首选实现 - 所以只有在测试环境中,您才会更改测试主题(小心编写有意义的测试!)或者它的依赖关系。其他模拟对象框架也很有用,但是学习JMockit的投入确实花费了很多时间。