gpt4 book ai didi

java - 在 BDD 测试用例中使用模拟是否明智?

转载 作者:行者123 更新时间:2023-11-30 05:57:56 24 4
gpt4 key购买 nike

我们将使用 BDD 实现一个小型 Java 应用程序,该应用程序使用 apache.org 的 POI 读取 MS excel 工作表,并根据该 excel 将一些文本打印到 STDOUT。我们一致认为,最简单的解决方案是为每个 BDD 测试用例创建一个 test.xls。

还有另一个想法,那就是我们应该模拟 POI 库调用和测试期望。这个想法背后的原因是我们不想测试 POI,并浪费测试时间在每个测试用例中使用它。此外,文件访问在不同的操作系统上可能会很棘手。

在这种情况下使用模拟是否明智?

最佳答案

定义模拟的范围和不模拟的范围绝对是灰色的,但是我认为有两个关于模拟的一般性陈述可以提供指导:

  1. Mock only interfaces that you own .
  2. Mocks are not stubs .

因此,尽管有时您想要模拟一个子系统,因为它很慢,但正确的模拟是将慢速系统识别为需要架构分离的东西,因此您将开发能够正确表示您与该慢速系统交互的接口(interface),并且 mock 那里的行为。然后,您将进行另一类测试,测试那些实际与慢速资源交互的接口(interface)的实现,以确保该代码有效。

就这如何应用于 POI 而言,可能有也可能没有充分的理由来模拟 POI 的抽象。这取决于项目的范围。对我来说,如果我觉得该项目从长远来看可能需要不同的电子表格解决方案,我就会这样做。

我当然不会模拟实际的 POI 类,因为上面的第一个链接非常清楚地表明这种方法会带来多少痛苦。

关于java - 在 BDD 测试用例中使用模拟是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935228/

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