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); } } ```