在TDD中测试双向依赖类

gec*_*cio 0 tdd

最近我想通过开发一个真实的东西学习TDD,所以我决定使用简单的数据打包器/解包器.在纸上设计后,一切看起来都不错,但是当我尝试编码时,我意识到我不知道如何测试它,所以在TDD中 - 如何做任何事情.

我有两个班:ArchiveReaderArchiveWriter.问题是,当我将某些内容保存到文件中时,ArchiveWriter我无法正常测试它ArchiveReader,没有它我不得不逐字节地比较输出,我认为这不是一个好主意 - 次要的,相关的更改可能会在以后发生.ArchiveReader测试也需要阅读,所以我必须ArchiveWriter用来制作测试包.

TDD在这方面失败了吗?有没有方法来测试这样的案例?

Mat*_*hew 5

如果你已经拥有了两个类的代码,那么它不是真正TDD,因为测试没有驱动设计.

您仍然可以测试代码,具体取决于如何处理这些类的依赖关系.例如,如果ArchiveWriter类写入流,您可以将其输出到内存流而不是文件流,编写者不应该关心它是什么类型的流,它将允许您比较写入的结果方法.

对于ArchiveReader类来说也是如此,如果它从流中读取,那么它可以是内存流.

至于你的问题,ArchiveWriter并且ArchiveReader相互依赖于相互验证,我认为这不一定是个问题.尽管能够独立测试它们是理想的,但是没有规则单元测试只能测试单个类.

至于这些类,在生产中,它们可能总是彼此相切使用,如果你以后不能再读它,写一个档案是没有意义的.