У меня есть анализатор журналов, над которым я работаю, и этот анализатор журналов имеет интерфейс ILogStore
, который определяет базовые методы для любого механизма хранения записей журнала (в памяти, в базе данных и т. Д.).Идея состоит в том, что разработчики и пользователи могут добавлять или удалять механизмы хранения журналов через интерфейс плагина MEF.
Однако, чтобы подтвердить, что реализация ILogStore
может правильно хранить, фильтровать и извлекать записи журнала, я создал базовый класс для тестирования модуля / интеграции / API:
public class LogStoreBaseTests
{
protected ILogStore _store;
[TestMethod]
public void Can_Store_And_Retrieve_Records() { }
[TestMethod]
public void Can_Filter_Records_By_Inclusive_Text() { }
[TestMethod]
public void Can_Filter_Records_By_Exclusive_Text() { }
// etc...
}
Я проверяю свои реализованные задачи, выполняя что-то вроде:
[TestClass]
public class InMemoryLogStoreTests : LogStoreBaseTests
{
[TestInitialize]
public void Setup()
{
_store = new InMemoryLogStore();
}
}
Это работает хорошо, за исключением того, что MsTest замечает, что методы в базовом классе имеют [TestMethod]
, но ошибки, потому что у класса нет [TestClass]
,чего он не делает, потому что сам по себе это недействительные тесты.
Как я могу сказать MsTest игнорировать методы, когда они не запускаются из подкласса?