gpt4 book ai didi

unit-testing - 方法调用转发的单元测试策略是什么?

转载 作者:行者123 更新时间:2023-12-04 18:42:58 24 4
gpt4 key购买 nike

我有以下情况:

public class CarManager{  ..  public long AddCar(Car car)  {      try      {         string username = _authorizationManager.GetUsername();         ...         long id = _carAccessor.AddCar(username, car.Id, car.Name, ....);         if(id == 0)         {             throw new Exception("Car was not added");         }         return id;      } catch (Exception ex) {         throw new AddCarException(ex);      }  }  public List AddCars(List cars)  {     List ids = new List();     foreach(Car car in cars)     {         ids.Add(AddCar(car));     }     return ids;  }}

我正在模拟 _reportAccessor、_authorizationManager 等。

现在我想对 CarManager 类进行单元测试。我是否应该对 AddCar() 进行多次测试,例如

AddCarTest()AddCarTestAuthorizationManagerException()AddCarTestCarAccessorNoId()AddCarTestCarAccessorException()

对于 AddCars() 来说,我应该在 AddCars() 调用 AddCar() 时重复所有以前的测试 - 这看起来像是在重复自己吗?我是否应该不从 AddCars() 调用 AddCar() ?

请帮忙。

最佳答案

这里有两个问题:

  • 单元测试不应该一次测试一个方法。它们的设计应该能够证明您的类在与系统的其余部分集成时可以完成其设计的工作。因此,您应该模拟出依赖关系,然后为实际使用类的每种方式编写测试。对于您编写的每个(重要的)类,都会存在涉及客户端代码以特定模式调用方法的场景。
  • AddCars 调用 AddCar 没有任何问题。您应该重复测试错误处理,但仅当它达到目的时才如此。单元测试的非官方规则之一是“测试到无聊的程度”或(正如我喜欢这样想的)“测试直到恐惧消失”。否则你将永远编写测试。因此,如果您确信测试不会增加任何值(value),他们就不会编写它。当然,你可能错了,在这种情况下,你可以稍后再回来并将其添加进去。你不必在第一次就进行完美的测试,只需为你可以更好地理解你的类(class)的内容奠定坚实的基础。需要做的事情。

关于unit-testing - 方法调用转发的单元测试策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/101151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com