【发布时间】:2019-08-04 21:16:37
【问题描述】:
我一直在将 TDD 应用于一些新项目以掌握事情的窍门,并且我了解基本流程:编写失败的测试,编写代码以通过测试,如果需要进行重构,重复。
为了保持测试的快速和解耦,我将网络请求和文件 I/O 等内容抽象出来。这些通常被抽象为使用依赖注入传递的接口。
通常开发非常顺利,直到我意识到我需要实现这些抽象接口。抽象它们的全部意义在于使其易于测试,但是按照 TDD,我需要在编写实现代码之前编写测试,对吗?
例如,我正在查看 tdd-tetris-tutorial https://github.com/luontola/tdd-tetris-tutorial/tree/tutorial/src/test/java/tetris。如果我想添加使用键盘的功能,我会将基本控件抽象为 Controller 类中的方法,例如可以测试的“rotateBlock”、“moveLeft”等。
但最后,在实现控制器类时,我需要添加一些逻辑来检测来自键盘的击键。如何编写测试来实现它?
也许有些东西无法测试,在某些情况下不可能达到 100% 的代码覆盖率?
【问题讨论】:
标签: unit-testing tdd integration-testing