我有一个类A
与依赖B
。我需要仔细检查UT中的流量吗?
我写了一个UT到B::foo(String s1, String s2)
。说我测试的B::foo("a", "a")
假设A::foo(..)
电话B::foo(..)
流我必须写一个A::("a", "a")
UT?
我会注入B :: foo的模拟并检查它被调用一次,也从一个结果是否如预期给出从B.
你会避免这样的情况下模拟一个嘲笑的结果?
您是否可以避开整个流程,因为它已经在B
UT中进行了检查?
我有一个类A
与依赖B
。我需要仔细检查UT中的流量吗?
我写了一个UT到B::foo(String s1, String s2)
。说我测试的B::foo("a", "a")
假设A::foo(..)
电话B::foo(..)
流我必须写一个A::("a", "a")
UT?
我会注入B :: foo的模拟并检查它被调用一次,也从一个结果是否如预期给出从B.
你会避免这样的情况下模拟一个嘲笑的结果?
您是否可以避开整个流程,因为它已经在B
UT中进行了检查?
单元测试可以作为防范软件bug的附加防线。在生产代码中制造错误的可能性很大,在生产代码和单元测试中产生相同的错误的可能性要小得多。这是您编写单元测试的原因之一 - 以获得更多保证您的软件按预期工作的原则。
我会注入B :: foo的模拟并检查它被调用一次,也从一个结果如预期给出嘲笑结果从B.
你要问自己,你是多么通过这样做获益。如果A
超过B
A
测试呢?A
代码中的错误有多困难?每个单元测试都是要做的决定。没有“是的,为这个班级编写测试”准则或规则。你需要确定你的时间是否可以花在编写包装类的单元测试上,或者是否在其他地方投资更好。
B::foo
已经过单元测试,所以最好的行动方式是假设它是完美的。如果您有理由怀疑B::foo
是完美的,请在BTest
中添加测试,直到您感觉舒服为止,然后认为它是完美的。
在这一点上,编写一个单元测试A::foo
可能是多余的,除非你声称它准确地返回(一些排列)B::foo
。由于jimmy_keen said,这可能意味着您对A
的测试是微不足道的。请记住,单元测试旨在涵盖可能会破坏的事物,因此如果您拥有的只是一个包装器,那么您可能不需要进行彻底的测试。
(注意事项:如果B
是不是你的控制之下,你不能相信它的完美,通过各种手段增加B
测试,只要你能,包括一个单独的测试类,或在ATest
这是一个独立的。尽管如此,抽象打破案例。)