web-dev-qa-db-ja.com

Nunitの1回限りの初期化

クラスごとに1回ではなく、1回だけ実行するコードをどこに配置すればよいですか?この例は、DB接続文字列を初期化するステートメントです。そして、それを一度実行するだけでよく、それを行うためだけに各「TestFixture」クラス内に新しいメソッドを配置したくありません。

52
code-ninja

[SetUpFixture]属性を使用すると、同じネームスペースですべてのテストに対してセットアップコードまたはティアダウンコードを1回実行できます。

ここSetUpFixtureのドキュメントです。ドキュメントによると:

任意の名前空間外のSetUpFixtureは、アセンブリ全体のSetUpおよびTearDownを提供します。

したがって、すべてのテストでSetUpTearDownが必要な場合は、SetUpFixtureクラスが名前空間にないことを確認してください。

あるいは、「グローバル」テスト変数を定義するために、常に厳密に静的クラスを定義できます。

60
Ben Hoffstein

クラスを作成し(私はConfigを呼び出します)、[SetUpFixture]属性。 [SetUp]および[TearDown]クラスのメソッドは1回実行されます。

[SetUpFixture]
public class Config
{
    [SetUp]  // [OneTimeSetUp] for NUnit 3.0 and up; see http://bartwullems.blogspot.com/2015/12/upgrading-to-nunit-30-onetimesetup.html
    public void SetUp()
    {
    }

    [TearDown]  // [OneTimeTearDown] for NUnit 3.0 and up
    public void TearDown()
    {
    }
}
42
Jamie Ide

NUnit

[SetUpFixture]
public class TestLogging
{
    [OneTimeSetUp]
    public void Setup()
    {
        DoStuff();
    }
}
13
K0D4