我目前正试图弄清楚如何编写适当的单元测试。还有很多东西需要学习。我想问的一个场景如下:
假设我正在测试类A
的方法X
。现在我经常发现有必要调用一个不属于当前测试的方法B
(X
)。大多数情况下,这可能是设置测试夹具(即更改X
的状态)或断言A
的某些内容(即对X
的状态进行断言) 。在这两种情况下,嘲弄都是徒劳的。但是,如果我对B
进行了任何(错误的)更改,那么即使A
没有任何变化,测试A
也可能会失败。
现在,我不确定如何解释这个结果。这是否意味着我的测试过程或设计存在缺陷,或者说这是一个非问题,因为我毕竟测试了单元“X
”(该类)?
答案 0 :(得分:5)
如果A
的测试失败的原因是因为X
问题导致类B
的对象处于无效状态,则不一定有任何问题与您的测试设计。实际上,在进行测试B
之前,您应该对A
进行一些失败的单元测试。这样,您可以假设如果这些测试通过,A
的任何测试失败都是A
出现问题的结果。
编写单元测试的典型方法是假设每个未测试的方法都能正常工作。但是,这只是有用的,如果其他方法有自己的单元测试来在引入时捕获错误。但是,如果您没有这样做,那么由于您最近在A
中引入了错误导致的B
测试用例失败可能会让您咆哮错误的树。