web-dev-qa-db-fra.com

Test unitaire C # [TestInitialize]

Je suis en train de tester des contrôleurs API Web C # - chacun nécessite plusieurs paramètres pour s'initialiser. J'ai ce code dans chaque test pour le moment mais c'est très volumineux. Comment puis-je mettre ce code dans le [TestInitialize] afin qu'il s'exécute avant chaque test?

J'ai essayé ce qui suit, mais évidemment, il existe des méthodes hors test pour les méthodes de test.

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

Merci

35
anthonyhumphreys

Vous pouvez définir les variables dont vous avez besoin en tant que champs de la classe de test, puis les initialiser dans la méthode 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();
    }   
}

De cette façon, les champs sont accessibles à partir de chaque test

63
dmorganb