TDD重复测试数据

met*_*dos 4 testing tdd unit-testing duplicate-data duplicates

我是测试驱动开发的新手,我第一次尝试在一个简单的项目中使用它.

我有一个类,我需要测试这个类的对象的创建,插入和删除.如果我写三个单独的测试函数,我需要在其他函数中复制初始化代码.如果我将所有测试放在一个测试函数中,那么它与每个函数的一个测试相矛盾.我该怎么办?

这里的情况:

tst_create()
{
   createHead(head);
   createBody(body);
   createFoot(foot);
}

tst_insert()
{
   createHead(head);
   createBody(body);
   createFoot(foot);

   obj_id=insert(obj); //Also I need to delete obj_id somehow in order to preserve old state
}

tst_delete()
{
   createHead(head);
   createBody(body);
   createFoot(foot);

   obj_id=insert(obj); 

   delete(obj_id);
}
Run Code Online (Sandbox Code Playgroud)

VS

tstCreateInsertDelete()
{
   createHead(head);
   createBody(body);
   createFoot(foot);

   obj_id=insert(obj);

   delete(obj_id);
}
Run Code Online (Sandbox Code Playgroud)

Lun*_*ore 6

而不是"每个功能一次测试",尝试将其视为"每个功能的行为的一个方面".

插入对象会给你什么?删除一个对象怎么样?为什么这些有价值?你怎么能告诉你已经完成了它们?写一个如何使用代码的例子,以及为什么这种行为很有价值.那就成了你的考验.

当你弄清楚你感兴趣的行为是什么时,只有在它使测试更具可读性的情况下才能提取出复制品.TDD不只是测试; 它还涉及提供文档,并帮助您考虑代码的每个元素的责任和代码的设计.测试的读取可能远远超过它们的编写,因此必须首先考虑可读性.

如有必要,将您感兴趣的所有行为放在一个方法中,并确保它是可读的.如果需要,您可以添加注释.