Есть полезный пост по этому вопросу в 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");
}
Это универсальный метод для имитации подключения и доступа к сервису, но он также может быть легко применен к интерфейсам.
Однако Имейте в виду, что если вы используете дженерики в модульном тесте, вы потеряете гранулярность, это потому, что ваш тест будет охватывать несколько случаев .
Скоро станет неясно, что вы тестируете в каждом интерфейсе
Если ваш тест не пройден после первого, вы не сможете обнаружить больше ошибок, что приведет к сбойному маскированию. .
Проверьте это решение, немного дергайте его, чтобы понять все его преимущества и недостатки, а также прочитать похожие посты.