Unit testing 测试最佳实践:针对积垢api

Unit testing 测试最佳实践:针对积垢api,unit-testing,testing,Unit Testing,Testing,以前也回答过类似的问题,但它们并没有解决我的问题 我正在用create、read、update和delete方法测试一个api。最好单独测试每个功能。但是, 要测试创建,我需要阅读。 要测试阅读,我需要创建。 要测试更新,我需要创建和读取。 要测试删除。我需要创造 除了这个api本身,我没有其他(例如,较低层api)的验证机制 在这种情况下,我应该用所有东西编写一个长测试吗?或4种不同的测试;每个都有特殊的设置和拆卸逻辑 谢谢这是非常主观的,但我会写四个不同的测试 易于维护 更容易找到可能的错

以前也回答过类似的问题,但它们并没有解决我的问题

我正在用create、read、update和delete方法测试一个api。最好单独测试每个功能。但是,

要测试创建,我需要阅读。 要测试阅读,我需要创建。 要测试更新,我需要创建和读取。 要测试删除。我需要创造

除了这个api本身,我没有其他(例如,较低层api)的验证机制

在这种情况下,我应该用所有东西编写一个长测试吗?或4种不同的测试;每个都有特殊的设置和拆卸逻辑


谢谢

这是非常主观的,但我会写四个不同的测试

  • 易于维护
  • 更容易找到可能的错误
  • 提高可读性
可读性

如果testmethod测试所有东西,您会给它取什么名字?我发现以
CreateShouldCreateARecord
的形式阅读测试方法比阅读
TestCRUD

查找错误


随着可读性的提高,更容易知道出了什么问题。同样,对于一个单一的方法,您在报告中得到的只是
TestCRUD
方法失败,您必须深入研究以发现它是一个错误的读取

我不喜欢更多的代码;由于更复杂的设置*4和拆卸逻辑*4。但这似乎是敲定确切问题的代价。例如,如果testRead失败,那么我应该知道安装失败(即写入失败)或读取失败。@AsadIqbal-与所有内容一样,始终需要权衡。在这种情况下,以及我个人的偏好,这是值得的。我不同意关于定位错误的部分。如果我们还记得OP问题,当我看到测试CreateShouldCreateARecord失败时,我怎么知道是创建记录出错,还是读取失败并给了我一个假阴性?最后我看了一下函数和调试的代码。如果是这样,我将一无所获,而我必须编写更多的设置、拆卸等@K.L.-关于
Create/Read
,你说得对。这不应该在两个不同命名但在其他方面相同的测试用例中完成。它将测试用例的数量从四个减少到三个,但是尝试为每个方法编写一个测试用例的意图仍然存在。