2014-10-24 15 views
19

Jestem kontrolerami C# Web API do testowania jednostek - każdy wymaga kilku parametrów do zainicjowania. Mam ten kod w każdym teście w tej chwili, ale jest bardzo nieporęczny. Jak mogę umieścić ten kod w [TestInitialize], aby działał przed każdym testem?Test jednostek C# [TestInitialize]

Próbowałem następujące rzeczy, ale oczywiście istnieje poza zakresem testmethods.

[TestInitialize] 
public void TestInitialize() 
{ 
    APIContext apicon = new APIContext(); 
    xRepository xRep = new xRepository(apicon); 
    var controller = new relevantController(cRep); 
    controller.Request = new HttpRequestMessage(); 
    controller.Configuration = new HttpConfiguration(); 
    relevantFactoryModel update = new relevantFactoryModel(); 
} 

Dzięki

Odpowiedz

37

Można ustawić zmienne, które są potrzebne jako pola klasy testu, a następnie zainicjować je w metodzie TestInitialize.

class Tests 
{ 
    // these are needed on every test 
    APIContext apicon; 
    XRepository xRep; 
    Controller controller; 
    RelevantFactoryModel update; 

    [TestInitialize] 
    public void TestInitialize() 
    { 
     apicon = new APIContext(); 
     xRep = new xRepository(apicon); 
     controller = new relevantController(cRep); 
     controller.Request = new HttpRequestMessage(); 
     controller.Configuration = new HttpConfiguration(); 
     update = new relevantFactoryModel(); 
    } 
} 

ten sposób pola mogą być dostępne z każdego testu

Powiązane problemy