2010-03-05 2 views
4

(Извините за непонятное название, пожалуйста, отредактируйте его, если вы можете найти лучший вариант)Как запустить набор тестов nUnit с двумя разными настройками?

Я хочу запускать те же тесты в двух разных хранилищах данных, я могу создать хранилища данных в Setup() метод.

Должен ли я иметь суперкласс, который содержит все тесты и абстрактный метод SetUp(), а затем иметь подкласс для каждого хранилища данных?

Или есть лучший способ?

См. "Case insensitive string compare with linq-to-sql and linq-to-objects" для того, что я тестирую.

ответ

11

Простым решением является это.

Все ваши тестовые примеры представлены в абстрактном классе, например, в классе TestBase. Например:

public abstract class TestBase 
{ 
    protected string SetupMethodWas = ""; 

    [Test] 
    public void ExampleTest() 
    { 
     Console.Out.WriteLine(SetupMethodWas);  
    } 

    // other test-cases 
} 

Затем вы создаете два подкласса для каждой установки. Таким образом, каждый подкласс будет запускаться человеком с его методом установки, а также всеми унаследованными тестовыми методами.

[TestFixture] 
class TestA : TestBase 
{ 
    [SetUp] 
    public void Setup() 
    { 
     SetupMethodWas = "SetupOf-A";  
    } 
} 
[TestFixture] 
class TestB : TestBase 
{ 
    [SetUp] 
    public void Setup() 
    { 
     SetupMethodWas = "TestB"; 
    } 
} 

Это работает замечательно. Однако для более простых тестов parameterized tests - лучшее решение

+0

Спасибо, что делает абстрактное абстрактное базовое задание! –