【问题标题】:Unit Testing: Is dependency between tests is a good idea at all? [closed]单元测试:测试之间的依赖是一个好主意吗? [关闭]
【发布时间】:2014-11-17 16:46:24
【问题描述】:

我来自JUnit,最近开始了一个项目,我开始使用TestNG
TestNG 具有的功能之一是您可以定义您的测试是否依赖于其他测试。

这让我很惊讶,因为我一直认为测试需要是独立的。他们必须创建自己的数据、断言并继续前进。这听起来让我很困惑。

如果这是一个好主意,我想收集反馈。

【问题讨论】:

  • 当您测试多步骤工作流程时,它可能是在单个测试方法中转储长脚本的更简洁的替代方法。需要登录和导航的 UI 测试类似。
  • 有一个抽象的单元测试类,它在单独的函数中执行,怎么样?
  • 这只是意味着现在每个下游测试都需要样板。

标签: java unit-testing junit testng


【解决方案1】:

我不使用 testNG,但我认为这个功能有时会很有用。

我同意独立测试的想法,这意味着为一项测试创建的数据不应被另一项测试使用,以避免副作用。

但是,有时你知道如果你的程序不能执行简单的任务 A,它就不能执行更复杂的任务 B。所以如果 A 的测试失败,你知道 B 的测试也会失败。例如,如果我的程序甚至无法解析 '{"a":1}'(任务/测试 A),我认为我无法解析复杂的 json 字符串(任务/测试 B)。

如果你有一个回归使得任务 A 不可能完成,那么像 B 这样的更复杂的操作都会失败,而且原因乍一看并不明显(报告将显示 X 次失败的测试,而只修复一个就可以解决所有问题)。如果您的代码包含有关依赖项的信息,您将直接知道哪个测试导致了问题(并且测试框架不会运行肯定会失败的测试)。

【讨论】:

    【解决方案2】:

    在我看来,测试应该是独立的。正如@daydreamer 所说,一个好的做法是将一些实用程序/共享代码放在抽象类中以简化测试代码。让我们考虑测试 CRUD,我认为测试此类事情的最佳方法是:在设置方法中测试创建,在常规测试中测试读取和更新,最后在清理方法中测试删除。测试结果不能依赖于资源(例如数据库中的数据)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多