java - 我需要仔细检查 UT 中的流量吗?

标签 java unit-testing mocking mockito

我有一个带有依赖项 B 的类 A

我向 B::foo(String s1, String s2) 写入了一个 UT。假设我测试 B::foo("a", "a")

的流程

假设A::foo(..)调用B::foo(..)

我必须写一个A::("a", "a") 的UT吗?

我会注入(inject) B::foo 模拟并检查它是否被调用过一次,并且 A 的结果是否符合预期(给定 B 的模拟结果)。

在这种情况下你会避免模拟吗?

您会避免整个流程吗,因为它已经在 B UT 中检查过?

最佳答案

单元测试是针对软件错误的额外防线。在生产代码中出现错误是有可能的,在生产代码和单元测试中出现相同错误的可能性要小得多。这是您编写单元测试的原因之一 - 以获得更多保证您的软件按预期工作。

I would inject B::foo mock and check it was called once and also the result from A is as expected given a mocked result from B.

你需要问问自己这样做你收获了多少。如果 AB

的简单包装器
  • 这样的A测试有多大值(value)?
  • 检测A代码中的错误有多难?
  • 制作起来有多容易?
  • 修复起来有多难?

每个单元测试都是要做出的决定。没有“是的,为此类编写测试”的指导方针或规则。您需要确定您的时间是否可以花在为包装类编写单元测试上,或者是否最好将其投入到其他地方。

关于java - 我需要仔细检查 UT 中的流量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26122828/

相关文章:

java - Eclipse Juno 4.2 的 Swing 插件?

c# - 在内存中模拟 LinqToSql 存储库以用于单元测试

go - 使用 redigomock 测试事务(MULTI)命令

java - Spring cloud config - 加载附加文件

java - 有没有办法在不使用相机方法的情况下在 Android 中使用手电筒?

c++ - Hippomocks - 具有可变参数计数的模拟函数

unit-testing - iOS 中的 XCTest 和 UI 测试

c++ - 为什么GMock无法识别mock类中虚方法的实现?

mocking - 模拟身份和IPrincipal

java - spring-integration 中的 Windows key 身份验证