2014-02-19 67 views
12

我正在使用nunit为某些类进行一些测试。Nunit基础类与普通测试

有几个操作对所有测试类都很常见,但需要不同的参数才能工作。

因此,我在基类中添加了测试,并在基类中添加了虚拟方法来提供参数。

在派生的测试类中,我重写了虚拟方法来为基类中的测试提供特定的参数。

现在我的问题是,我希望基类中的测试只能从派生类中执行。我目前使用基类的忽略属性来忽略测试,但是这会在测试运行时引发一些警告,并且如果存在一些被忽略的测试,则存在不允许我将更改提交给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