why isn't TestInitialize getting called automatically?

c#, unit-testing, visual-studio-2013

Solution

Make `Initialize` and `Cleanup` public. You can also check, that at msdn all examples have public accessor.

In order to reproduce, make such test class:

[TestClass]
public class Tests
{
    [TestInitialize]
    public void Initialize()
    {
        Console.WriteLine("initialize");
    }

    [TestCleanup]
    public void Cleanup()
    {
        Console.WriteLine("cleanup");
    }

    [TestMethod]
    public void Test()
    {
        Console.WriteLine("test body");
    }
}

That test will produce the following results:

Making `Initialize` and `Cleanup` private, you'll see only `test body` being printed to the console:

Used Microsoft.VisualStudio.QualityTools.UnitTestFramework assembly as unit testing framework version 10.1.0.0 and ReSharper 8.2 as a test runner.

Problem

I'm `using Microsoft.VisualStudio.TestTools.UnitTesting;` but the method I marked as [TestInitialize] isn't getting called before the test. I've never used this particular testing framework before but in every other framework there is always a way of registering a Setup and TearDown method that will auto run before and after every single test. Is this not the case with the visual studio testing tools unit testing framework? ``` [TestClass] public class RepoTest { private const string TestConnectionString = @"Server=localhost\SQL2014EXPRESS64; Database=RepoTest; Trusted_Connection=True;"; private const string MasterConnectionString = @"Server=localhost\SQL2014EXPRESS64; Database=master; Trusted_Connection=True;"; [TestInitialize] private void Initialize() { using(var connection = new SqlConnection(MasterConnectionString)) using(var command = new SqlCommand(Resources.Initialize, connection)) { command.ExecuteNonQuery(); } } [TestCleanup] private void Cleanup() { using (var connection = new SqlConnection(MasterConnectionString)) using (var command = new SqlCommand(Resources.Cleanup, connection)) { command.ExecuteNonQuery(); } } [TestMethod] public void CreateARepo() { var repo = new Repo(TestConnectionString); } } ```

Original source