Using MS Test ClassInitialize() and TestInitialize() in VS2010 as opposed to NUnit

32,803

Here is a simple example using TestInitialize and 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();
    }
}
Share:
32,803
Jennifer S
Author by

Jennifer S

Updated on December 31, 2020

Comments

  • Jennifer S
    Jennifer S over 3 years

    I've used NUnit with VS2008, and now am adapting to MSTest on VS2010. I used to be able to create an object in TestSetup() and dispose of it in TestCleanup(), and have the object created each time a test method was run in NUnit, preventing me from duplicating the code in each test method.

    Is this not possible with MSTest? The examples I am finding using the ClassInitialize and ClassCleanup and TestInitialize and TestCleanup attributes only show how to write to the console. None show any more detailed use of these attributes.

  • Jennifer S
    Jennifer S over 13 years
    Thanks, Tom. Am I correct in assuming that NorthwindEntities is a referenced assembly in the test project?
  • Tom Brothers
    Tom Brothers over 13 years
    Yes, it was in a referenced assembly.
  • mungflesh
    mungflesh over 9 years
    Note that TestInitialize and TestCleanup methods must be marked as public, as shown.
  • TamaMcGlinn
    TamaMcGlinn almost 4 years
    Also note: if TestInitialize throws an exception then TestCleanup is not called. So while the code above is correct, adding any code after creating the context that could throw will necessitate a try { ... } catch { TestCleanUp(); throw; } block.