首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xUnit -测试接口的提取与实现

xUnit -测试接口的提取与实现
EN

Stack Overflow用户
提问于 2019-09-10 10:51:21
回答 1查看 204关注 0票数 1

上下文

我刚刚遇到了一个场景,其中我有多个类似的UnitTests,几乎可以以ctrl-c ctrl-v的方式处理。例如,当断言AutoMapper及其Profiles是有效的时。

问题

因此,我一直在考虑,如果从这些测试中提取接口并在需要测试属于相同目的的的新类时实现它,这将被认为是一个很好的实践。

代码段

例如,对于下列测试:

代码语言:javascript
复制
[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();
}

可以提取到以下接口:

代码语言:javascript
复制
public interface IViewModelsTests
{
    void ConfigurationValid();
    void FromCreate();
    void FromEdit();
    void ToDetail();
    void ToList();
    void ToList_Many();
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-10 10:54:06

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

只是要小心,不要使他们太复杂,或有多个层次的继承。这可能导致相当不可读的测试和不可维护的代码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57869240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档