上下文
我刚刚遇到了一个场景,其中我有多个类似的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的非常具体的场景,无论何时需要。
发布于 2019-09-10 10:54:06
如果它们足够相似,那么从基类派生来运行这些测试也不会太糟糕。然后编写一次功能并将其添加到所有实现中。
只是要小心,不要使他们太复杂,或有多个层次的继承。这可能导致相当不可读的测试和不可维护的代码。
https://stackoverflow.com/questions/57869240
复制相似问题