4

我目前正在一个爱好项目上尝试测试驱动开发的过程,虽然我确实理解这个概念(首先编写你的单元测试,观察它失败,让它工作,重构你的代码)我仍然有一些问题。

我正在从事的项目是 Python 中的 MUD 客户端。现在我正忙于实现 telnet 协议。(我知道 Python 中已经有一个 telnetlib 或 Twisted 中的实现,但这不是重点)

现在我有一个 TelnetHandler 类,它实现了 Telnet 协议(或至少它的一部分)和各种单元测试。因为它们相当大,所以它们在 pastebin 上:TelnetHandler单元测试

我现在的问题如下:

  • 许多测试相互依赖:例如,如果test_handle_read测试失败,那么许多其他测试也会失败。
  • TelnetOptionsTests我添加了我的类应该调用的方法以检查它们是否被调用(各种local_option_enabled方法)。现在,我的课堂上没有这些方法。我应该添加单元测试只是为了检查它们的存在吗?
  • 当我开始编写测试时,我将handle_read方法更改为也解析 telnet 命令。之后,一旦我完成了我的测试,我就将它们分成了handle_read各种_handle_do,_handle_dont等等handle_read... 这是正确的方法,还是在将方法拆分为不同方法时编写单元测试也是一种好习惯?

基本上,我要问的是各种可以帮助我提高单元测试技能的提示和指针。

谢谢!

4

1 回答 1

4

许多测试相互依赖:例如,如果 test_handle_read 测试失败,那么许多其他测试也会失败。

不要这样做。在每个测试开始时,把世界扔掉,然后按照测试运行的方式重新创建它。

当我开始编写测试时,我更改了 handle_read 方法来解析 telnet 命令。之后,一旦我完成了测试,我将 handle_read 拆分为各种 _handle_do、_handle_dont 等……但是我没有对这些进行单元测试,因为它们正在原始的 handle_read 中进行测试。这是正确的方法,还是在将方法拆分为不同方法时编写单元测试也是一种好习惯?

这取决于。当您拆分时,您是拆分成不同的公共方法,还是它们是处理实现的私有方法。

于 2012-08-24T15:13:32.980 回答