2014-07-06 1 views
5

Sono using Microsoft.VisualStudio.TestTools.UnitTesting; ma il metodo che ho contrassegnato come [TestInitialize] non viene chiamato prima del test. Non ho mai usato questa particolare struttura di test prima, ma in ogni altro framework c'è sempre un modo di registrare un metodo di Setup e TearDown che verrà eseguito automaticamente prima e dopo ogni singolo test. Non è questo il caso del framework di testing dell'unità strumenti di test dello studio visivo?perché TestInitialize non viene richiamato automaticamente?

[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); 
    } 
} 
+0

Probabilmente deve essere pubblico. –

risposta

7

Fai Initialize e Cleanup pubblico. Puoi anche verificare che a msdn tutti gli esempi abbiano accesso pubblico.

Per riprodurre, rendere tale classe di test:

[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"); 
    } 
} 

Quella prova produrrà i seguenti risultati:

enter image description here

Fare Initialize e Cleanup privato, potrai vedere solo test body in stampa sulla console:

enter image description here

Usato Microsoft.VisualStudio.QualityTools.UnitTestFramework montaggio come versione quadro unit testing 10.1.0.0 e ReSharper 8.2 come un test runner.