2011-06-27 3 views
0

これが実行可能かどうかはあまりよく分かりません。どのようにしてクラス内の特定のメソッドが常に最初に呼び出されることを確認しますか?

現在、テストコードの開始前にライセンス情報を設定する必要があります。これらのテストでは、ライセンス情報の初期化が必要な第三者コンポーネントライブラリが使用されるためです。ライセンス情報は、プログラムの実行開始時に1回だけ設定する必要があります。

しかし、私が理解から、NUnitのの哲学は、あなたが任意の順序で、いつでも、任意のクラスのクラスを実行することができるということですので、各クラスのsetup方法があるが、setup方法はありませんテストスイートのテストの開始時に実行されます。しかし、私は間違っているかもしれません。

テスト実行プロセス全体でメソッドが常に最初に呼び出されることを確認する方法はありますか?

答えて

3

SetupFixture属性を見てください。 1つのセットアップ機能を定義して、名前空間全体に対して1回実行することができます。

0

一般的に私は可能な限りセットアップとティアダウンを避けようとしています。彼らはユニットテストをするときに統合テストを書いていることを示している(特にティアダウン)。 しかし、私はあなたの状況に知られています。これが必要なときは、ライセンスを扱うクラスからtestfixureを派生させます。

public class LicencedTestFixture 
{ 
    private LicenseComponent _licenseComponent; 

    public LicencedTestFixture() 
    { 
     _licenseComponent = new LicenseComponent(); 
     _licenseComponent.Init(); 
    } 

    ~LicencedTestFixture() 
    { 
     _licenseComponent.Shutdown(); 
    } 

} 

テスト・フィクスチャは、ちょうどクラスからinherrit、そしてそれはそれは知っている必要がすべてです:

[TestFixture] 
public sealed class SomeTestFixture: LicencedTestFixture 
{}