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

MyT*_*tle 3 java language-agnostic junit unit-testing

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

Jon*_*eet 5

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

  • 它可以更容易地将您故意测试的行为与您偶然测试的行为分开
  • 它可以更轻松地测试故障条件以及其他方法未涵盖的其他方案
  • 这意味着如果你改变delete/的update实现使用get/ create,你还在测试get/create

理想情况下,我会尝试(不要太忙于它)来设置测试并检查"较低"级别的数据 - 例如执行直接内存数据库访问.这样你真的在测试"如果我创建一个实体,数据库中的数据看起来像{this}"(同样在获取时).只要能够重新创建,然后得到相同的结果来讲是精细黑箱测试,但我通常认为的单元测试更白框.