Unit testing 测试数据的TDD复制

Unit testing 测试数据的TDD复制,unit-testing,testing,tdd,duplicates,duplicate-data,Unit Testing,Testing,Tdd,Duplicates,Duplicate Data,我是测试驱动开发的新手,第一次尝试在一个简单的项目中使用它 我有一个类,我需要测试该类对象的创建、插入和删除。如果我写三个独立的测试函数,我需要在其他函数中复制初始化代码。另一方面,如果我将所有测试放在一个测试函数中,那么每个函数一个测试是矛盾的。我该怎么办 情况如下: tst_create() { createHead(head); createBody(body); createFoot(foot); } tst_insert() { createHead(head

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

我有一个类,我需要测试该类对象的创建、插入和删除。如果我写三个独立的测试函数,我需要在其他函数中复制初始化代码。另一方面,如果我将所有测试放在一个测试函数中,那么每个函数一个测试是矛盾的。我该怎么办

情况如下:

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);
}
vs


排除测试中的重复

根据您的测试框架,可能支持定义在每次测试执行之前调用的安装方法和在每次测试之后调用的拆卸方法

无论如何,您可以提取公共内容,这样您只需重复对单个共享设置的调用

如果您告诉我们您使用的语言和测试框架,我们可能会给出更具体的建议。

与其说是“每个函数一个测试”,不如试着把它看作是“每个函数行为的一个方面”

插入对象会给你带来什么?删除一个对象怎么样?为什么这些东西很值钱?你怎么知道你做了这些?写一个代码如何使用的例子,以及为什么这种行为是有价值的。这就成了你的测试

当你弄清楚你感兴趣的行为是什么时,只有当它使测试更具可读性时,才能提取出重复项。TDD不仅仅是测试;它还涉及提供文档,并帮助您思考代码的每个元素的责任以及代码的设计。测试的阅读量可能远远超过编写的测试量,因此可读性必须放在第一位


如有必要,将所有感兴趣的行为放在一个方法中,并确保其可读性。如果需要的话,你可以添加注释。

我对C++和QT没有多大帮助,但其他人可能会。
tstCreateInsertDelete()
{
   createHead(head);
   createBody(body);
   createFoot(foot);

   obj_id=insert(obj);

   delete(obj_id);
}