接口的通用单元测试

问题描述 投票:-3回答:2

是否有一组单元测试可以验证我的接口实现是否正确?具体来说,我正在使用ISet<T>的实现,并希望基本上将其插入单元测试,以验证我的实现是否正确。 (而不是我提出5-20单元测试以获得良好的覆盖率)

似乎所有接口都可以为它们编写一些通用的单元测试。

c# .net unit-testing
2个回答
0
投票

Software Engineering中有关于此事的有用帖子,代码看起来像这样:

private void Test<TService,TFilter>(string urlSuffix) 
    where TService : SoapHttpClientProtocol, new() 
    where TFilter : new() 
{
    string serviceUrl = Helper.GetBaseUrl() + urlSuffix;
    TService service = new TService();
    service.Credentials = Helper.GetCredentials();
    service.Url = serviceUrl;
    TFilter[] filter = { new TFilter() };
    service.ReadMultiple(filter, null, 0);
}

[TestMethod]
public void PlaceOfWork()
{
    Test<PlaceOfWork_Service,PlaceOfWork_Filter>("PlaceOfWork");
}

这是模拟服务连接和访问的通用方法,但它也可以轻松应用于接口。

但是,如果您在单元测试中使用泛型,则会丢失粒度,这是因为您的测试将涵盖多个案例。

  1. 很快就会不清楚你在每个界面测试的是什么
  2. 如果您的测试在第一个测试失败后,您将无法发现导致fail masking.的更多错误。

检查这个解决方案,稍微抽搐一下,以了解它的所有优点和缺点,并阅读类似的帖子。


© www.soinside.com 2019 - 2024. All rights reserved.