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

时间:2013-03-08 17:33:05

标签: java unit-testing language-agnostic junit

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

2 个答案:

答案 0 :(得分:5)

我会为getcreate编写测试,是的:

  • 这样可以更轻松地将您故意测试的行为与偶然测试
  • 的行为区分开来
  • 可以更轻松地测试失败条件以及其他方法未涵盖的其他方案
  • 这意味着如果您将delete / update的实施更改为而不是使用get / create,那么您仍在测试{ {1}} / get

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

答案 1 :(得分:1)

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

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