3

我应该为每个公共方法编写单元测试吗?例如,我有一个 CRUD 服务,所以我有 create, read, update, delete方法。delete但是,当我向or方法写入测试时update,我会隐式测试readcreate方法(例如,要update首先测试方法,我需要创建一个实体(create),然后检索它(read),然后update再次检索它以确保它已更改)。

4

2 回答 2

5

get我会为and编写测试create,是的:

  • 它可以更轻松地将您有意测试的行为与您偶然测试的行为区分开来
  • 它可以更轻松地测试其他方法未涵盖的故障条件和其他场景
  • 这意味着如果您将delete/的实现更改update使用get/ create,您仍在测试get/create

理想情况下,我会尝试(不要太挂断它)设置测试并在“较低”级别检查数据 - 例如执行直接内存数据库访问。这样你就真的在测试“如果我创建一个实体,数据库中的数据看起来像 {this}”(在获取时也是如此)。就黑盒测试而言,仅仅能够创建然后再次获得相同的结果就可以了,但我通常认为单元测试更像是白盒。

于 2013-03-08T17:36:12.843 回答
1

我应该为每个公共方法编写单元测试吗?是的

为每个公共方法编写一个测试用例是最好的事情。要测试删除操作,您应该先调用创建测试,然后调用删除测试方法。这样您的删除测试方法将是独立的,您可以测试所有可能的场景。

于 2013-03-08T17:39:15.097 回答