我是TDD的新手,并且到目前为止非常喜欢它(尽管这是一个调整过程)。
但是,我正在努力研究如何测试应用程序的入口点。我指的是main(String... args)
方法,这个类的唯一职责是从/向磁盘加载和保存属性文件等。
当我第一次做代码时,这似乎不是问题。我只是不会为那些方法/类编写测试。但是,当我必须在没有测试的情况下编写代码时,我应该如何遵循TDD流程?
换句话说,何时/如何编写入口点符合TDD开发过程?
答案 0 :(得分:5)
在大多数情况下,您无法单元测试入口点,因为根据定义, unit 测试会单独测试单元< / strong>来自其依赖项。
除了一些微不足道的边缘情况之外,应用程序的入口点是Composition Root - 也就是所有单元集成的地方。虽然您可以对入口点执行完整的系统测试,但通常应将其视为Humble Executable。
我个人的规则是,Humble Executable不能包含任何逻辑(只有合成),我用Cyclomatic Complexity来衡量它;如果Humble Executable的Cyclomatic Complexity是1,那么可以不测试它。
但是,虽然您无法单位测试入口点,但仍然可以使用Outside-In TDD来驱动合成,但您通常仍需要更换一些外部服务Test Doubles。