在VS2010中使用MS Test ClassInitialize()和TestInitialize()而不是NUnit
我已经在VS2008中使用了NUnit,现在正在适应VS2010上的MSTest。我曾经能够在TestSetup()中创建一个对象,并在TestCleanup()中处理它,并且每次在NUnit中运行测试方法时都会创建该对象,从而避免在每个测试方法中重复代码在VS2010中使用MS Test ClassInitialize()和TestInitialize()而不是NUnit,nunit,mstest,Nunit,Mstest,我已经在VS2008中使用了NUnit,现在正在适应VS2010上的MSTest。我曾经能够在TestSetup()中创建一个对象,并在TestCleanup()中处理它,并且每次在NUnit中运行测试方法时都会创建该对象,从而避免在每个测试方法中重复代码 这在MSTest中是不可能的吗?我发现的使用ClassInitialize和ClassCleanup以及TestInitialize和TestCleanup属性的示例仅显示了如何写入控制台。没有显示这些属性的任何更详细的使用 下面是一个使用T
这在MSTest中是不可能的吗?我发现的使用ClassInitialize和ClassCleanup以及TestInitialize和TestCleanup属性的示例仅显示了如何写入控制台。没有显示这些属性的任何更详细的使用 下面是一个使用TestInitialize和TestCleanup的简单示例
[TestClass]
public class UnitTest1
{
private NorthwindEntities context;
[TestInitialize]
public void TestInitialize()
{
this.context = new NorthwindEntities();
}
[TestMethod]
public void TestMethod1()
{
Assert.AreEqual(92, this.context.Customers.Count());
}
[TestCleanup]
public void TestCleanup()
{
this.context.Dispose();
}
}
谢谢,汤姆。假设NorthwindEntities是测试项目中的引用程序集,对吗?是的,它位于引用的程序集中。请注意,TestInitialize和TestCleanup方法必须标记为public,如图所示。另请注意:如果TestInitialize引发异常,则不会调用TestCleanup。因此,尽管上面的代码是正确的,但是在创建可能抛出的上下文之后添加任何代码都需要一个
try{…}catch{TestCleanUp();throw;}
块。