单元测试继承
问题描述:
我如何使[TestClass()]的基类,我会做MyClassInitialize(),之后,我将只是使我的另一个测试类就像 - MyNewTest:BaseTest 那里将没有初始化?单元测试继承
答
(使用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)
{
}
}
答
在NUnit/MbUnit中,只需将Initalize/Cleanup方法与相应的属性放在基类中,然后从中继承即可。
我还没有尝试过这与MSTest,但我不会推荐这个框架无论如何。
托马斯
看来你正在使用C#(和NUnit?) - 请注明。 – 2010-10-19 13:35:06
我会质疑这一举措背后的动机。单元测试应该是短暂的,并且*简单*。如果你隐藏初始化,它们可能会变得脆弱而难以维护。 – Kane 2010-10-19 13:40:27