我目前正在尝试一个爱好项目的测试驱动开发过程,虽然我理解这个概念(首先编写单元测试,看它失败,让它工作,重构你的代码)我仍然有一些问题
我正在研究的项目是Python中的MUD客户端。现在我正忙着实施telnet协议。 (我知道Python中已有一个telnetlib或Twisted中的一个实现,但这不是重点)
现在我有一个TelnetHandler类,它实现了Telnet协议(或至少部分协议)以及各种单元测试。 由于它们相当大,因此它们位于pastebin:TelnetHandler和unit tests
我现在的问题如下:
test_handle_read
测试失败,那么很多其他测试也会失败。TelnetOptionsTests
我添加我的类应该调用的方法,只检查它们是否被调用(各种local_option_enabled
方法)。现在,我班上没有这些方法。我应该添加单元测试来检查它们的存在吗?handle_read
方法以解析telnet命令。之后,一旦我完成了我的测试,我将handle_read
拆分为各种_handle_do
,_handle_dont
等等......但我没有进行单元测试,因为他们正在接受测试原始handle_read
。这是正确的方法,或者当您使用不同的方法拆分方法时,编写单元测试也是一种好习惯吗?基本上,我要问的是各种提示和指示,可以帮助我提高单位测试技能。
谢谢!
答案 0 :(得分:4)
许多测试依赖于彼此:例如,如果test_handle_read测试失败,那么很多其他测试也会失败。
不要这样做。在每次测试开始时,将世界抛弃,并以该测试运行的方式重新创建它。
当我开始编写测试时,我更改了handle_read方法以解析telnet命令。之后,一旦我完成了我的测试,我将handle_read拆分为各种_handle_do,_handle_dont等等......但我没有对那些进行单元测试,因为他们正在原始的handle_read中进行测试。这是正确的方法,或者在使用不同的方法拆分方法时编写单元测试是一种好习惯吗?
这取决于。拆分时,您是否拆分为不同的公共方法,或者是处理实现的私有方法。