2014-02-19 2 views
12

Я использую nunit для выполнения некоторых тестов для некоторых классов.Основной класс Nunit с общими тестами

Существует несколько операций, которые являются общими для всех классов испытаний, но для работы требуются разные параметры.

Поэтому я добавил тесты в базовый класс и виртуальные методы в базовом классе для предоставления параметров.

В производных классах тестов я переопределяю виртуальные методы для предоставления конкретных параметров для тестов в базовом классе.

Теперь моя проблема в том, что я хочу, чтобы тесты в базовом классе выполнялись только из производных классов. В настоящее время я использую атрибут ignore в базовом классе для игнорирования тестов, но это вызывает некоторые предупреждения при запуске тестов и существует политика, которая не позволяет мне отправлять изменения в svn, если есть несколько игнорируемых тестов.

Как я могу запустить тесты из базового класса в производных классах, не используя атрибут ignore в базовом классе.

ответ

16

Вы должны иметь возможность отмечать ваш базовый класс как абстрактный, это остановит nunit, выполняющего тесты в этом классе, что означает, что вам больше не нужен атрибут ignore.

namespace MyTests 
{ 
    [TestFixture] 
    public abstract class BaseTestClass 
    { 
     [Test] 
     public void CommonTest() 
     { 

     } 
    } 

    [TestFixture] 
    public class TestClass1 : BaseTestClass 
    { 
     [Test] 
     public void OtherTest1() 
     { 

     } 
    } 

    [TestFixture] 
    public class TestClass2 : BaseTestClass 
    { 
     [Test] 
     public void OtherTest2() 
     { 

     } 
    } 
} 
+0

Невероятно, кажется, все так просто. Как я мог пропустить это. Если это абстрактный класс, Nunit не имеет возможности напрямую создать экземпляр и запустить тесты. – Alecu

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