2013-09-07 4 views
2

Я создаю приложение с архитектурой плагина, и я хотел бы создать общие тесты для плагинов, поскольку точки расширения четко определены. Плагины будут иметь свои собственные тесты для тестирования внутренних вещей.Модули тестирования модулей в приложении с архитектурой плагина

Что является предпочтительным способом создания этих тестов, так что каждый плагин не нуждается в тестировании для «очевидного» материала? Меня интересует, как такие тесты проводятся в отношении модульной системы тестирования.

Должно быть достаточно, если бы кто-то указал мне на проект с открытым исходным кодом, который имеет такие общие тесты для плагинов. Мое приложение сделано в C# (и MEF для композиции), поэтому проекты, написанные на аналогичных (строго типизированных) языках (например, Java), являются предпочтительными.

ответ

1

Похож положить общие тесты в базовый класс и вытекающие из него для каждого плагина является жизнеспособным способом:

public interface IPluginComponent 
{ 
} 

[TestClass] 
public abstract class BaseTests 
{ 
    protected abstract IPluginComponent CreateComponent(); 

    [TestMethod] 
    public void SomeTest() 
    { 
     IPluginComponent component = this.CreateComponent(); 

     // execute test 
    } 
} 

public class MyPluginComponent : IPluginComponent 
{ 
} 

[TestClass] 
public class MyPluginTests : BaseTests 
{ 
    protected IPluginComponent CreateComponent() 
    { 
     return new MyPluginComponent(); 
    } 

    [TestMethod] 
    public void CustomTest() 
    { 
     // custom test 
    } 
} 

Испытание с использованием однако MSTest должны знать ошибки, где он не может работать тесты в базовом классе, если базовый класс находится в другой сборке. Это не была исправлена ​​в Visual Studio 2010, не уверен, что 2012:

Shared Unit Tests with MSTest

Visual Studio Test (MSTest) and lack of Inheritance support for base classes that resides in different assemblies

Смежные вопросы