Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单元测试,大型装置/夹具_C#_Unit Testing_Moq_Xunit - Fatal编程技术网

C# 单元测试,大型装置/夹具

C# 单元测试,大型装置/夹具,c#,unit-testing,moq,xunit,C#,Unit Testing,Moq,Xunit,假设我们有一个服务,其他服务在DI上。被测试的方法对输入数据进行一些处理,进行一些验证,调用一些注入的服务(只能获取数据或修改数据,然后返回一些内容),然后返回一些内容 考虑到这个场景,我需要编写许多案例来测试所有可能的行为,比如验证异常、未发现异常、业务异常、正常流等等 问题是,我需要为安装模拟注入服务上的所有方法。这可能会快速增长 在这种大型/复杂的方法中,夹具和设置(模拟依赖项)的最佳方法是什么?有解决这个问题的模式吗? 对于数据模拟,我使用了builder模式,它可以很好地简化任务。您应

假设我们有一个
服务
,其他服务在
DI
上。被测试的方法对输入数据进行一些处理,进行一些验证,调用一些注入的服务(只能获取数据或修改数据,然后返回一些内容),然后返回一些内容

考虑到这个场景,我需要编写许多案例来测试所有可能的行为,比如验证异常、未发现异常、业务异常、正常流等等

问题是,我需要为安装模拟注入服务上的所有方法。这可能会快速增长

在这种大型/复杂的方法中,夹具和设置(模拟依赖项)的最佳方法是什么?有解决这个问题的模式吗?


对于数据模拟,我使用了
builder模式
,它可以很好地简化任务。

您应该尝试创建独立的类,您可以在不引入太多依赖项的情况下进行测试,但在某些情况下,会有一个类使用其他组件(例如ViewModel)。在这种情况下,我使用:

它有助于创建测试中的系统/类,并有助于注入依赖项。您可以将它与NSubstitute一起使用,但不能仅与它一起使用


使用AutoFixture,您可以创建您将要检查的模拟类,但AutoFixture将自动为您生成不需要的rest依赖项,因此扩展构造函数不会导致修改大量单元测试。

该方法似乎做得太多了。将其拆分为多个可测试的方法。当您有许多依赖项时,您肯定需要对它们进行许多模拟。这就是为什么你应该让你的单元在测试中保持小规模。但并非所有方法都是可拆分的。此外,如果拆分完成,那么测试调用这些较小方法的“管弦乐队”方法如何?