【问题标题】:Dependencies between tests in scalascala中测试之间的依赖关系
【发布时间】:2017-04-30 08:07:54
【问题描述】:

我想测试一个复杂的工作流程,既要对其组件进行单元测试,又要对整个事物运行集成测试,而无需两次不必要地运行子组件。

例如,例程c 处理ab 的结果。我想要以下测试套件:

  • 单元测试 1:运行 a 并验证结果
  • 单元测试 2:运行 b 并验证结果
  • 夜间集成测试:运行 ab,验证其结果,然后运行 ​​c 并验证其结果,无需重新运行 ab,但是重用输出

运行每个组件需要一些时间,因此“每次都运行所有内容”的明显解决方案是不切实际的。

代码在 Scala 中,但我不在乎使用哪个测试框架 - scalatest、specs2 甚至 TestNG,一切都很好,尽管我更喜欢 Scala-ish 解决方案。谢谢!

【问题讨论】:

    标签: scala unit-testing


    【解决方案1】:

    “重用输出”意味着您的单元测试会产生一些工件,夜间集成测试将消耗这些工件。这可能是一种不好的做法,最终会更频繁地伤害你。除非这些测试真的需要大量时间,否则我会重复它们,或者找到更好的方法来验证它们的输出(DRYer 测试,不要在任何地方都进行相同的测试)

    【讨论】:

    • 这些是数据分析算法的测试。我准备了模拟数据集以最小化测试运行时间,但它仍然不可忽略,尤其是对于完整的流程。根据我的经验,如果测试太慢,开发人员将不愿意运行和维护它们,因此会出现问题。
    • 如果测试输出不变,您可以使用 json 文件等物化结果启动集成测试。如果输出不同,那么您的单元测试确实是您的集成测试的一部分,并且您希望尝试与它们保持更远的距离。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 2014-06-19
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多