【发布时间】:2019-09-10 10:51:21
【问题描述】:
上下文
我刚刚遇到了一个场景,我有多个 UnitTests,它们非常相似,几乎可以以 ctrl-c ctrl-v 的方式处理。例如,当断言AutoMapper 及其Profiles 有效时。
问题
所以我一直在考虑如果我需要测试符合相同目的的新类时,从这些测试中提取接口并实现它是否被认为是一种好习惯。
代码片段
例如,对于以下测试:
[Fact]
public void ConfigurationValid()
{
throw new System.NotImplementedException();
}
[Fact]
public void FromCreate()
{
throw new System.NotImplementedException();
}
[Fact]
public void FromEdit()
{
throw new System.NotImplementedException();
}
[Fact]
public void ToDetail()
{
throw new System.NotImplementedException();
}
[Fact]
public void ToList()
{
throw new System.NotImplementedException();
}
[Fact]
public void ToList_Many()
{
throw new System.NotImplementedException();
}
可以提取到如下界面:
public interface IViewModelsTests
{
void ConfigurationValid();
void FromCreate();
void FromEdit();
void ToDetail();
void ToList();
void ToList_Many();
}
每当我创建一个新的 ViewModel 并希望对其进行单元测试时,我都可以在我的新 TestClass 上实现接口并让它涵盖所有默认场景。而且我仍然可以灵活地添加新测试,以在需要时为每个 ViewModel 覆盖非常具体的场景。
【问题讨论】:
-
对于您的特定情况,可以(应该)通过实际行为测试来测试 AutoMapper。
标签: c# unit-testing .net-core xunit xunit.net