接口的通用单元测试

时间:2018-09-03 04:07:18

标签: c# .net unit-testing

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

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

2 个答案:

答案 0 :(得分: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.的错误。

检查此解决方案,稍作调整,以了解其所有优点和缺点,并阅读类似的文章。

答案 1 :(得分:0)