单元测试 - 相同的方法但不同的测试数据

byt*_*yte 5 c# asp.net-mvc unit-testing

这是关于单元测试的非常基本的问题.

我有一个方法,例如GetOrderDetails,它调用Repository来获取订单详细信息.我有一个模拟存储库,可以设置为返回库存响应.

为了测试GetOrderDetails方法,我至少会使用以下情况 -

存储库调用失败

  1. 带有错误代码
  2. 有一个例外

存储库调用成功

  1. 返回零结果
  2. 返回一个结果
  3. 返回了多个结果

我应该编写一个测试方法来测试上述场景,还是应该为上述每个场景分别采用单独的测试方法?

我相信,将其分解为多种测试方法至少可以提供以下好处:1.在测试失败的情况下更高的隔离度2.测试方法中的代码量少于3.每个测试方法将具有单个存储库设置职责,例如设置为无结果,或设置为多个结果等

你可以帮忙看看你对此的看法吗?

Dar*_*rov 8

我会为每个案例编写一个单独的单元测试.基本上每次在你正在测试的方法中编写一个if或一个switch内部时,都需要使用不同的单元测试来处理每个案例.这样做的原因是,您的单元测试的安排部分将根据您希望代码采用的路线(不同的模拟期望,属性设置,......)而有所不同.另外,我建议您按以下三个部分组织单元测试:

// arrange
// -> prepare mock objects, properties, setup expectations

// act
// -> invoke the method your are testing

// assert
// -> assert on the results returned by the method your are testing
Run Code Online (Sandbox Code Playgroud)