gpt4 book ai didi

unit-testing - SWTBot 与单元测试

转载 作者:行者123 更新时间:2023-12-04 05:24:51 25 4
gpt4 key购买 nike

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

下一个问题。 SWTBot 足以测试基于 Eclipse RCP 的应用程序吗?请问有必要写单元测试吗?

注意:我们是 Scrum 团队。

最佳答案

SWTBot 和 JUnit 有两个不同的目的。

JUnit

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

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

  • Key qualities of a good unit test
  • What attribute should a good Unit-Test have?

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

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

    在相关说明中,另请参阅此问题: How to efficiently JUnit test Eclipse RCP Plugins

    机器人

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

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

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

    dialog.textField.setText( "data" );
    dialog.okButton.notifyListeners( SWT.Selection, null );

    assertThat( dialog.getEnteredData() ).isEqualTo( "data" );

    两者都用

    最好的办法是同时进行单元测试,确保各个单元的行为和功能测试,确保特定单元按需要一起运行。

    不确定这是否回答了问题,如果您有更多疑虑,请发表评论。

    关于unit-testing - SWTBot 与单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680988/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com