2010-10-19 82 views
1

我如何使[TestClass()]的基类,我会做MyClassInitialize(),之后,我将只是使我的另一个测试类就像 - MyNewTest:BaseTest 那里将没有初始化?单元测试继承

+2

看来你正在使用C#(和NUnit?) - 请注明。 – 2010-10-19 13:35:06

+1

我会质疑这一举措背后的动机。单元测试应该是短暂的,并且*简单*。如果你隐藏初始化,它们可能会变得脆弱而难以维护。 – Kane 2010-10-19 13:40:27

回答

3

(使用MSTest的)

的ClassInitialize不会在基类的工作。看起来这个属性只在被执行的测试类中被搜索到。但是,您可以显式调用基类。

下面是一个例子:

[TestClass] 
public class MyTestClass : TestBase 
{ 
    [TestMethod] 
    public void MyTestMethod() 
    { 
     System.Diagnostics.Debug.WriteLine("MyTestMethod"); 
    } 

    [ClassInitialize] 
    public new static void MyClassInitialize(TestContext context) 
    { 
     TestBase.MyClassInitialize(context); 
    } 
} 

[TestClass] 
public abstract class TestBase 
{ 
    public TestContext TestContext { get; set; } 

    public static void MyClassInitialize(TestContext context) 
    { 
     System.Diagnostics.Debug.WriteLine("MyClassInitialize"); 
    } 

    [AssemblyInitialize] 
    public static void AssemblyInit(TestContext context) 
    { 
    } 
} 
1

在NUnit/MbUnit中,只需将Initalize/Cleanup方法与相应的属性放在基类中,然后从中继承即可。

我还没有尝试过这与MSTest,但我不会推荐这个框架无论如何。

托马斯