|
|
1
44
我对这一点的态度严重偏向于 Growing Object-Oriented Software Guided by Tests
评论者更新: 如果您正在读取结构化数据(例如图书对象)(如果不是,请用字符串代替IEnumerable)
所以你很快; 不要攻击文件系统 . 它们只是验证是否对依赖项调用了正确的方法(例如加载/保存)
下一步,您需要创建BookRepository的真正实现,该实现可以在文件上工作(如果需要的话,也可以在明天创建sqldb)。其他人不必知道。 写 对于FileBasedBookRepository(实现上述角色)并测试调用Load with a reference file会给出正确的对象,调用Save with a known list会将它们持久化到磁盘。即 使用真实文件
验收试验 锻炼负重和节省。 |
|
|
2
6
您可以传递流、TextWriter或类似的文件,而不是将文件名传递给save函数。然后在测试时,您可以通过一个基于内存的实现,并验证是否写入了正确的字节,而无需实际向磁盘写入任何内容。
|
|
3
4
编写执行文件I/O的单元测试时,有一条一般规则需要谨慎,因为它们往往太慢。但在单元测试中并没有绝对禁止文件I/O。
只有第一个真正涉及文件系统。其余的只使用一个输出流。 因此,您可以将中间部分和最后一部分提取到它自己的方法(函数),该方法处理给定的输出流,而不是命名文件。然后可以模拟输出流来对方法进行单元测试。这些单元测试将非常快。大多数编程语言已经提供了一个合适的输出流类。 这只剩下第一部分需要单元测试。您将只需要几个测试,所以您的测试套件应该仍然可以接受的快。 |
|
|
wavesinaroom · 断言结构向量长度 1 年前 |
|
|
Tim Kirkwood · 比较空数据帧 1 年前 |
|
Kamran Khan · 使用单元测试ASP。NET核心 2 年前 |
|
|
paymer · 为什么我的代码没有删除我的单元测试生成的zip文件? 2 年前 |
|
|
Ricky Mo · 角度测试如何模拟导入的const 2 年前 |
|
|
Natty · Visual Studio中缺少“代码覆盖率结果” 2 年前 |