2

我才刚刚开始学习测试驱动开发和单元测试,但似乎这两个概念都非常依赖于接口结构的使用。鉴于接口是一个抽象结构,没有实现,在我看来,接口公开的数据必须由任何消耗接口的东西重新验证。所以我想知道......可测试的设计是否真的需要持续验证,或者我错过了什么?

4

1 回答 1

1

接口通常被认为是一个契约,它(通过它的文档)指定了它的实现者应该如何表现的规则。即使编译器无法看到或验证实现者是否遵循这些规则,程序也只是假设所有实现者都遵循这些规则。例如,给定

public interface IPersonInfo {
    // Returns a valid social security number.
    String getSocialSecurityNumber();
}

接口的消费者通常会假设实现者只会返回有效的社会安全号码,因此消费者不需要重新验证它。当然,这假设您信任实现代码;如果这是例如外部 Web 服务或第三方插件的接口,您可能需要验证返回值。但是,一般的方法是说,在单个程序中,假设实现者将遵循非正式规则(并且单元测试通常测试“规范”实现)并接受如果有人开始使用该程序将行为不端一个不合格的实现。

于 2013-06-01T09:51:09.487 回答