Unit testing SWTBot与单元测试

Unit testing SWTBot与单元测试,unit-testing,eclipse-rcp,swtbot,Unit Testing,Eclipse Rcp,Swtbot,我们使用SWTBot编写功能测试。测试某些情况非常困难,一些程序员直接从实现中使用类及其方法(例如从classAddUserDialog等调用方法)。这是好办法吗?为什么 请回答下一个问题。SWTBot是否足以测试基于EclipseRCP的应用程序?有必要写单元测试吗 注意:我们是scrum团队。SWTBot和JUnit有两个不同的用途 朱尼特 顾名思义,JUnit用于单元测试。单元测试应该很小,执行起来很快。它们只测试单个代码单元,并且上述属性允许在开发被测单元时经常执行它们 但是还有更多的(

我们使用SWTBot编写功能测试。测试某些情况非常困难,一些程序员直接从实现中使用类及其方法(例如从class
AddUserDialog
等调用方法)。这是好办法吗?为什么

请回答下一个问题。SWTBot是否足以测试基于EclipseRCP的应用程序?有必要写单元测试吗


注意:我们是scrum团队。

SWTBot和JUnit有两个不同的用途

朱尼特 顾名思义,JUnit用于单元测试。单元测试应该很小,执行起来很快。它们只测试单个代码单元,并且上述属性允许在开发被测单元时经常执行它们

但是还有更多的(好的)单元测试。关于单元测试的更多属性,您可能需要阅读以下文章之一:

我会更进一步说,单元测试只有在TDD中才有意义,也就是说,在生成代码之前编写测试。否则你会忽略测试。谁想为已经有效的东西做额外的测试呢。而且,即使您有在事后编写测试的规则,它们也只是表示生产代码的状态。然而,就像在TDD中一样,事先编写测试会导致只执行测试所需的精益生产代码。 但我想这不是每个人都会同意的

在RCP设置中,单元测试在理想情况下能够在不启动平台的情况下运行(这需要相当长的时间)。也就是说,它们不需要作为PDE JUnit测试运行,而是作为普通JUnit测试运行。因此,测试单元应与RCP API隔离

另请参见相关问题:

SWTBot 虽然SWTBot使用JUnit运行时来执行测试,但它更像是创建集成或功能测试的实用工具。SWTBot与RCP一起使用时,会启动整个工作台并在同一实例中运行所有测试。因此,应非常小心,以确保每次测试使环境保持与测试开始前相同的状态。在这里,专门化可能有助于设置和删除特定的重复场景

设置SWTBot测试以从应用程序调用方法是完全有效的。例如,可以通过编程方式打开向导,然后使用SWTBot模拟输入数据并按下OK按钮的用户。不需要使用SWTBot费力地打开向导本身

根据我的经验,SWTBot对于简单的用例来说甚至是太多了。考虑一个测试,它应该把一些数据输入到对话框中,然后按OK。如果您已经以编程方式打开了该对话框,那么您也可以在不使用SWTBot的情况下继续:

dialog.textField.setText(“数据”);
dialog.okButton.notifyListeners(SWT.Selection,null);
断言(dialog.getEnteredData()).isEqualTo(“数据”);
兼用 最好的选择是同时进行单元测试,确保各个单元的行为,并进行功能测试,确保特定单元按照需要一起工作

不确定这是否回答了问题,如果您有进一步的担忧,请留下评论