2014-09-30 47 views
1

我有一个类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中进行了检查?

回答

0

单元测试可以作为防范软件bug的附加防线。在生产代码中制造错误的可能性很大,在生产代码单元测试中产生相同的错误的可能性要小得多。这是您编写单元测试的原因之一 - 以获得更多保证您的软件按预期工作的原则。

我会注入B :: foo的模拟并检查它被调用一次,也从一个结果如预期给出嘲笑结果从B.

你要问自己,你是多么通过这样做获益。如果A超过B

  • 简单的包装如何宝贵会这样A测试呢?
  • A代码中的错误有多困难?
  • 而且容易制作?
  • 而且有多难修复?

每个单元测试都是要做的决定。没有“是的,为这个班级编写测试”准则或规则。你需要确定你的时间是否可以花在编写包装类的单元测试上,或者是否在其他地方投资更好。

0

B::foo已经过单元测试,所以最好的行动方式是假设它是完美的。如果您有理由怀疑B::foo是完美的,请在BTest中添加测试,直到您感觉舒服为止,然后认为它是完美的。

在这一点上,编写一个单元测试A::foo可能是多余的,除非你声称它准确地返回(一些排列)B::foo。由于jimmy_keen said,这可能意味着您对A的测试是微不足道的。请记住,单元测试旨在涵盖可能会破坏的事物,因此如果您拥有的只是一个包装器,那么您可能不需要进行彻底的测试。

(注意事项:如果B是不是你的控制之下,你不能相信它的完美,通过各种手段增加B测试,只要你能,包括一个单独的测试类,或在ATest这是一个独立的。尽管如此,抽象打破案例。)