Ste*_*eod 151 unit-testing code-coverage
我的代码中的计算经过了充分测试,但由于GUI代码太多,我的整体代码覆盖率低于我的预期.有关单元测试GUI代码的指南吗?它甚至有意义吗?
例如,我的应用程序中有图表.我无法弄清楚如何自动化测试图形.需要人眼AFAIK来检查图表是否正确.
(我正在使用Java Swing)
Jon*_*eet 67
像MVP和MVC这样的设计通常会尝试从实际的GUI中抽象尽可能多的逻辑.一篇非常受欢迎的文章是Michael Feathers的"The Humble Dialog Box".就个人而言,我尝试将逻辑移出用户界面时遇到了不同的经验 - 有时候它的效果非常好,而有时它却比它的价值更麻烦.但这有点超出了我的专业领域.
dic*_*oce 37
当然,答案是使用MVC并尽可能多地移出GUI.
话虽这么说,很久以前我从一位同事那里听到,当SGI将OpenGL移植到新硬件时,他们进行了一系列单元测试,这些测试会在屏幕上绘制一组主要内容,然后计算帧缓冲区的MD5总和.然后可以将该值与已知的良好散列值进行比较,以快速确定API是否是每像素精确的.
您可以尝试使用Cucumber和Swinger以简单的英语为Swing GUI应用程序编写功能验收测试.Swinger使用Netbeans的Jemmy库来驱动应用程序.
Cucumber允许你编写这样的测试:
Scenario: Dialog manipulation
Given the frame "SwingSet" is visible
When I click the menu "File/About"
Then I should see the dialog "About Swing!"
When I click the button "OK"
Then I should not see the dialog "About Swing!"
Run Code Online (Sandbox Code Playgroud)
看看这个Swinger视频演示,看看它的实际运行情况.
小智 6
测试是一种艺术形式.我同意逻辑应该尽可能地删除GUI.然后我们可以将重点放在那里.像其他测试一样,关于降低风险.你不总是需要测试所有东西,但很多时候最好的办法就是打破不同区域的不同测试.
另一个问题是你真正想要在UI层测试什么.UI测试是最昂贵的测试,因为它通常需要更长的时间来创建,维护并且最脆弱.如果您在尝试绘制线之前测试逻辑以确定坐标是否正确,那么您具体测试的是什么?如果要测试带有红线的图形.你可以给它一个预定的坐标,并测试某些像素是红色还是不红色?正如上面提到的位图比较工作,Selenium但我主要关注的不是过度测试GUI,而是测试有助于创建UI的逻辑,然后关注UI的哪些部分中断或怀疑并集中一些测试那里.
| 归档时间: |
|
| 查看次数: |
60729 次 |
| 最近记录: |