TDD测试应用入口点

eth*_*far 3 tdd unit-testing entry-point

我是TDD的新手,到目前为止非常喜欢它(尽管这是一个调整过程).

但是,我正在努力研究如何测试应用程序的入口点.我所说的那个main(String... args)方法是一个类,它的唯一职责是从/向磁盘加载和保存属性文件等.

当我第一次做代码时,这似乎不是问题.我只是不会为那些方法/类编写测试.但是,当我必须在没有测试的情况下编写代码时,我应该如何遵循TDD流程?

换句话说,何时/如何编写入口点适合TDD开发过程?

Mar*_*ann 5

在大多数情况下,您无法对入口点进行单元测试,因为根据定义,单元测试会单独测试单元与其依赖关系.

除了一些微不足道的边缘情况之外,应用程序的入口点是组合根 - 即所有单元集成的位置.虽然您可以对入口点执行完整的系统测试,但通常应将其视为Humble Executable.

我个人的规则是,Humble Executable不能包含任何逻辑(只有组合),我用Cyclomatic Complexity来衡量它; 如果Humble Executable的Cyclomatic Complexity是1,那么可以不测试它.

但是,尽管您无法对入口点进行单元测试,但您仍然可以使用Outside-In TDD来驱动组合,尽管您通常仍需要使用Test Doubles替换一些外部服务.