【发布时间】:2017-01-07 16:17:37
【问题描述】:
我必须为 Java“绘图”应用程序 GUI(如 ArgoUML/LaTeXDraw/etc)自动生成测试。我需要验证测试的应用程序是否正确运行。在我给定的示例中,我需要检查 Undo/Redo 按钮是否正常工作 = Undo 将画布置于之前的状态,Redo 将其再次置于以前的状态。
我已经知道如何解决这个问题,但我希望得到有经验的人的反馈:
- 我应该使用 Robot 类来模拟 GUI 上的输入吗?或者 有没有更简单的方法?
我需要捕获程序的状态以供以后分析查看 如果程序的状态是一致的,我应该只是截图 窗口或者有没有办法遍历所有 JFrame 组件并捕获它们的属性(它应该包括画布 州)?
更重要的是,我不知道如何定位 界面。告诉机器人一个给定的最简单的方法是什么 按钮位于窗口中的某个 (x, y) 位置?我应该搜索 .jpeg 版本的按钮中的像素?我应该找到每个 手动在界面上的按钮(即为每个按钮创建一个类 包含 x, y 属性)?
- 最后,我从未将机器人“附加”到给定程序。能 我只是加载我要测试和告诉的软件的 .jar 文件 机器人在那个窗口上操作?还是我需要与所有 原始项目的源文件?
感谢您抽出宝贵时间,如果我的问题的任何部分似乎不够清楚,请告诉我,我会尽量解释得更清楚。
P.S: 欢迎任何关于我需要做的工作的建议:)
【问题讨论】:
-
“我必须为 JAVA 自动生成测试” 这样的测试有什么好处?他们真的测试了被测代码 的行为还是测试了测试生成器是否正常工作?我不会依赖这样的测试。
-
您可以尝试使用 ReTest (retest.de/en),它为功能回归测试和基于 AI 的猴子测试提供了一种有趣的新方法。
-
这个问题有几个版本——从现在开始,我将把人们推荐给这个Open source tools for automation of Java GUI application testing。它有很好的反响,我想鼓励 Thinking Q/A。
标签: java swing user-interface testing