Eri*_*ton 4 unit-testing eclipse-rcp swtbot
我们使用SWTBot编写功能测试.测试某些情况非常困难,一些程序员直接从实现中使用类及其方法(例如,类中的调用方法AddUserDialog等).这是好方法吗?为什么?
请下一个qustion.SWTBot足以测试基于Eclipse的RCP应用程序吗?是否有必要编写单元测试?
注意:我们是scrum团队.
SWTBot和JUnit有两个不同的用途.
顾名思义,JUnit用于单元测试.单元测试应该小而且快速执行.它们只测试一个代码单元,上面提到的属性允许它们在开发被测单元时经常执行.
但是还有更多(好)单元测试.您可能希望阅读以下帖子之一以获取单元测试的更多属性:
我会更进一步说单元测试只在TDD中有意义,即你在生产代码之前编写测试.否则你忽略了测试.谁想要为已经有效的东西编写测试的额外工作.即使你有纪律来编写测试,他们只是表明你的生产代码的状态.然而,像在TDD中一样,事先编写测试会导致精益生产代码只能执行测试所需的代码.但我猜这不是每个人都会同意的事情.
在RCP设置中,理想情况下,单元测试可以在不启动平台的情况下运行(这需要相当长的时间).即它们不需要作为PDE JUnit测试运行,而是作为简单的JUnit测试运行.因此,被测单元应与RCP API隔离.
在相关的说明中,另请参阅此问题:如何有效地JUnit测试Eclipse RCP插件
虽然SWTBot使用JUnit运行时来执行测试,但它更像是一个创建集成或功能测试的实用程序.SWTBot与RCP一起使用时,启动整个工作台并在同一实例中运行所有测试.因此,应特别注意确保每个测试使环境处于与测试开始之前相同的状态.专门规则可以帮助您设置和拆除特定的重复方案.
为了设置SWTBot测试以从您的应用程序调用方法,它是完全有效的.例如,您可以以编程方式打开向导,然后使用SWTBot模拟输入数据的用户并按下"确定"按钮.没有必要使用SWTBot来费力地打开向导本身.
根据我的经验,SWTBot对于简单的用例来说太过分了.考虑一个应该在对话框中输入一些数据然后按OK的测试.如果您已经以编程方式打开了对话框,则可以在没有SWTBot的情况下继续:
dialog.textField.setText( "data" );
dialog.okButton.notifyListeners( SWT.Selection, null );
assertThat( dialog.getEnteredData() ).isEqualTo( "data" );
Run Code Online (Sandbox Code Playgroud)
最好的办法是同时进行单元测试,以确保各个单元的行为和功能测试,以确保特定单元按需要一起播放.
不确定是否回答了问题,如果您有进一步的疑虑,请发表评论.
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |