0

我正在开发一些 Java 应用程序并编写 JUnit 测试。我有一个关于单元测试的设计问题。我有一个类可以读取文件并通过读取不同的行并基于某种算法进行解析来创建名为Song的对象。我已经为此编写了一些单元测试。解析后的下一步是根据Song对象的某些属性将该歌曲实际转换为不同的格式。我有另一门课是翻译。有一种方法 translate 将Song对象作为输入。现在正在对翻译器进行单元测试。我需要一个具有所有有效属性的 Song 对象。我在这里很困惑,我应该创作一首新歌吗对象通过在解析器中放置相同的功能,或者我应该调用解析器服务为我做这件事。如果我采取第二种选择,我觉得它不会被孤立。但在第一个选项中,它就像重复的代码。有人可以指导我吗?

4

1 回答 1

0

当数据很复杂时,使用 Builder 为 SUT 调用创建输入数据并没有错,但是我在这里看到了 2 个风险。

  • 如果构建器失败,您的测试也会失败,但它不应该。正如您所说,单元测试应该与外部代码隔离。
  • 如果您使用代码覆盖率作为衡量单元测试的指标(我并不是说这是正确的),那么通过查看构建器的覆盖率,您会很容易认为它已经过测试,尽管显然不是。

我的观点是没有适合所有场景的最佳解决方案。如果输入数据不是很复杂,请尝试“手动”构建它,否则使用构建器。

于 2013-11-14T08:34:17.697 回答