2014-10-24 15 views
19

Ich bin Unit Testing C# -Web API-Controller - jeder benötigt mehrere Parameter zu initialisieren. Ich habe diesen Code in jedem Test im Moment, aber es ist sehr sperrig. Wie kann ich diesen Code in [TestInitialize] setzen, so dass er vor jedem Test ausgeführt wird?Unit Test C# [TestInitialize]

Ich habe Folgendes versucht, aber offensichtlich existiert es außerhalb des Geltungsbereichs für die Testmethoden.

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

Dank

Antwort

37

Sie die Variablen festlegen können, die Sie als Felder der Testklasse müssen und sie dann in der Methode TestInitialize initialisieren.

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

diese Weise werden die Felder von jedem Test zugegriffen werden kann