2010-10-19 126 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,但我不會推薦這個框架無論如何。

托馬斯