Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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# xUnit-在测试中提取和实现接口 上下文_C#_Unit Testing_.net Core_Xunit_Xunit.net - Fatal编程技术网

C# xUnit-在测试中提取和实现接口 上下文

C# xUnit-在测试中提取和实现接口 上下文,c#,unit-testing,.net-core,xunit,xunit.net,C#,Unit Testing,.net Core,Xunit,Xunit.net,我刚刚遇到了一个场景,其中我有多个UnitTests,它们非常相似,几乎可以用ctrl-cctrl-v的方式处理。例如,当断言AutoMapper及其配置文件有效时 问题: 因此,我一直在思考,从这些测试中提取接口并在需要测试一个新类时实现它是否是一个好的实践,而这个类属于相同的目的 代码片段 例如,对于以下测试: [事实] public void ConfigurationValid() { 抛出新系统。NotImplementedException(); } [事实] public void

我刚刚遇到了一个场景,其中我有多个
UnitTests
,它们非常相似,几乎可以用
ctrl-cctrl-v
的方式处理。例如,当断言
AutoMapper
及其
配置文件
有效时

问题: 因此,我一直在思考,从这些测试中提取接口并在需要测试一个新类时实现它是否是一个好的实践,而这个类属于相同的目的

代码片段 例如,对于以下测试:

[事实]
public void ConfigurationValid()
{
抛出新系统。NotImplementedException();
}
[事实]
public void FromCreate()
{
抛出新系统。NotImplementedException();
}
[事实]
public void FromEdit()
{
抛出新系统。NotImplementedException();
}
[事实]
公开无效待审()
{
抛出新系统。NotImplementedException();
}
[事实]
公共收费表()
{
抛出新系统。NotImplementedException();
}
[事实]
公共空间
{
抛出新系统。NotImplementedException();
}
可以提取到以下接口:

公共接口IViewModelTests
{
void ConfigurationValid();
void FromCreate();
void FromEdit();
void ToDetail();
void ToList();
虚度光阴;
}

每当我创建一个新的ViewModel并希望对其进行单元测试时,我就可以在我的新TestClass上实现该接口,并让它覆盖所有默认场景。我仍然可以灵活地添加新的测试,以在需要时覆盖每个ViewModel的非常特定的场景。

如果它们足够相似,那么从基类派生来运行这些测试就不会太糟糕了。然后,该功能只编写一次,并添加到所有实现中


只是要小心不要使它们太复杂,或者具有多个继承级别。这可能会导致无法阅读的测试和无法维护的代码。

对于您的特定情况,AutoMapper可以(应该)通过实际行为测试进行测试。