有两个测试场景我不太清楚。乍一看,这两种方法都会产生非常脆弱的测试。
首先,应该在什么时候对接口进行单元测试(即验证接口是否具有设置的签名)?
其次,什么时候应该“测试序列图”(我刚刚编造的一个术语)-意思是验证对适当的对象进行了调用?
发布于 2010-06-29 05:16:16
测试接口意味着您应该只测试公共接口上可用的成员。换句话说,不要测试私密的东西。将被测单元作为黑盒。这使得测试更具可维护性,因为您可以在不破坏测试的情况下更改实现细节。测试还将表达被测单元的优点,而不是它是如何实现的。
在其他对象上进行的测试调用称为“交互测试”(不要与集成测试混淆,在集成测试中不模拟其他对象)。当被测单元调用另一个对象上的方法而不依赖它时,就需要进行交互测试。我试着用一个例子来解释它。
需要测试的方法如下:
public decimal CalculateTax(Order order);让我们假设此方法需要调用
TaxRules TaxRuleProvider.GetRules(Country country)它返回一些本地规则。当它不调用它时,它将无法返回正确的结果。它会遗漏重要的信息。您不需要测试它是否已被调用,只需测试结果即可。
另一种方法:
public void StoreThingy(Thingy toBeStored);它将调用
public void NotificationBroker.NotifyChanges(SomeChanges x);StoreThingy不依赖于通知。你不能决定它的接口是否发送通知。你需要通过交互测试来测试它。
通常,交互测试的方法返回void。在这个类别中有各种事件和通知,以及像Commit()这样的方法。
https://stackoverflow.com/questions/3136147
复制相似问题