单元测试继承

时间:2010-10-19 13:32:32

标签: unit-testing

如何使用[TestClass()]创建Base类,我将在其中执行MyClassInitialize(),之后,我将只创建另一个Test类 - MyNewTest:BaseTest 并且不会初始化?

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

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

托马斯