2010-12-30 19 views
21

Użyłem NUnit z VS2008, a teraz dostosowuję się do MSTest na VS2010. Kiedyś byłem w stanie utworzyć obiekt w TestSetup() i pozbyć go w TestCleanup(), i mieć obiekt utworzony za każdym razem, gdy metoda testu została uruchomiona w NUnit, uniemożliwiając mi duplikowanie kodu w każdej metodzie testu.Używanie MS Test ClassInitialize() i TestInitialize() w VS2010 w przeciwieństwie do NUnit

Czy to nie jest możliwe w przypadku MSTest? Przykłady, które znajduję przy użyciu atrybutów ClassInitialize i ClassCleanup i TestInitialize i TestCleanup pokazują tylko, jak pisać do konsoli. Brak pokazuje bardziej szczegółowe wykorzystanie tych atrybutów.

Odpowiedz

34

Oto prosty przykład użycia TestInitialize i 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(); 
    } 
} 
+0

Dzięki, Tom. Czy mam rację zakładając, że NorthwindEntities jest zbiorem referencyjnym w projekcie testowym? –

+0

Tak, znajdował się w zespole referencyjnym. –

+3

Należy pamiętać, że metody TestInitialize i TestCleanup muszą być oznaczone jako ** publiczne **, jak pokazano. – mungflesh

Powiązane problemy