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