我新工作的测试与我以前遇到的测试完全不同。
当他们编写单元测试时(大概在代码之前),他们创建了一个以“When”开头的类。该名称描述了测试将运行的场景(夹具)。他们将通过代码为每个分支创建子类。类中的所有测试都以“应该”开头,并在运行后测试代码的不同方面。因此,他们将有一种方法来验证每个模拟(DOC)是否被正确调用并检查返回值(如果适用)。我对这种方法有点困惑,因为这意味着每个测试都运行完全相同的执行代码,这似乎很浪费。我想知道是否有类似的技术他们可能已经适应了。一个解释样式及其应该如何实现的链接会很棒。
我还注意到他们已经将重复调用“执行”SUT 移动到设置方法中。当他们期待异常时,这会导致问题,因为他们不能使用内置工具来执行检查(Python unittest 的 assertRaises)。这也意味着将返回值存储为测试类的支持字段。他们还必须存储许多模拟作为支持字段。跨类层次结构很难分辨每个模拟的配置。
他们也以不同的方式测试代码。这真的归结为他们认为的集成测试。他们模拟出任何从被测试函数中窃取上下文的东西。这可能意味着同一类中的私有方法。我一直将模拟限制在可能影响测试结果的资源上,例如数据库、文件系统或日期。我可以看到这种方法的一些价值。但是,现在使用它的方式,我可以看到它导致脆弱的测试(每次代码更改都会中断的测试)。我很担心,因为如果没有集成测试,在这种情况下,您可能会错误地使用第 3 方 API,但您的单元测试仍然会通过。我也想了解更多关于这种方法的信息。
因此,任何关于在哪里可以了解更多关于其中一些方法的资源都会很好。我不想因为我不了解他们做事的方式而放弃一个很好的学习机会。我也想停止关注这些方法的负面影响,看看好处在哪里。