2012-08-26 19 views
29

私はなぜ据え付け品の設定が静的でなければならないのか不思議ですか?治具の寿命を共有する治具ごとにインスタンス変数を持たせる方が直感的です。ClassInitializeメソッドを静的にする必要があるのはなぜですか?

はい、これらはコンストラクタで初期化できますが、テストランナーのコントロールから手が届かないと考えられます。

セットアップ方法が静的である必要があると判断した設計要件または哲学は何ですか?

答えて

38

ClassInitialize属性を持つメソッドは、クラス内のすべてのテストに対して一度実行されます。クラスのインスタンスは、テストが実行されるたびに作成されるため、一度だけ実行するには静的でなければなりません。

すべてのテストで初期化する場合は、TestInitialize属性を使用できます。この属性は、クラスの新しいインスタンスが作成されるたびに(テスト実行前に)実行されます。あなたはより多くの情報が必要な場合は

、あなたがチェックアウトすることができます:

That Pesky MSTest Execution Ordering

+11

おかげで、私は、インスタンスは、各テストのために作成されました知りませんでした。 – ProfK

+5

私はメソッドが1回だけ実行するために静的でなければならないとは思わない。テストフレームワークは、適切なテストクラスを初期化して実行しています。すべてのテストメソッドが実行される前後で簡単に非静的メソッドを呼び出すことができます。 – d512

+0

静的でない場合、初期化をすべてのテストインスタンスと共有することはできません。私。すべてのテストで使用される模擬サービスを初期化する必要がある場合。 – user3285954

関連する問題