Why does TestInitialize get fired for every test in my Visual Studio unit tests?

TestInitialize and TestCleanup are ran before and after each test, this is to ensure that no tests are coupled.

If you want to run methods before and after ALL tests, decorate relevant methods with the ClassInitialize and ClassCleanup attributes.

Relevant information from the auto generated test-file in Visual Studio:

You can use the following additional attributes as you write your tests:

// Use ClassInitialize to run code before running the first test in the class
public static void MyClassInitialize(TestContext testContext) { }

// Use ClassCleanup to run code after all tests in a class have run
public static void MyClassCleanup() { }

// Use TestInitialize to run code before running each test 
public void MyTestInitialize() { }

// Use TestCleanup to run code after each test has run
public void MyTestCleanup() { }

Leave a Comment