web-dev-qa-db-ja.com

単体テストC#[TestInitialize]

私はC#Web APIコントローラーの単体テストを行っています-各コントローラーは初期化するためにいくつかのパラメーターを必要とします。現時点では各テストにこのコードがありますが、非常にかさばります。このコードを[TestInitialize]に配置して、各テストの前に実行するにはどうすればよいですか?

私は次のことを試しましたが、明らかにテストメソッドの範囲外です。

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

ありがとう

35

必要な変数をテストクラスのフィールドとして設定し、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();
    }   
}

これにより、すべてのテストからフィールドにアクセスできます

63
dmorganb