2012-02-27 5 views
2

私は自分のコードベースでNDependを使用していましたが、私の実際のコードは色が飛んでいるように見えますが、私の単体テストコードは多くの作業をする可能性があります。 NDependが提案した提案の1つは、テスト間の分離度が高いため、単体テストクラスの多くを静的クラスに変換することでした。これは、テストの間で状態を分かち合わず、どんな順序でも実行できるようにするのに役立つようです。ユニットテストクラスを静的クラスに変換する必要がありますか?ユニットテストクラスを静的にするのは意味がありますか?

あなたのテストは特定の順序で実行する必要はありませんか、彼らはあなたがそれらを静的にすることができます初期化子コードに依存していない場合は、同じTestFixture中とTestFixtures

+0

unittestフレームワークは静的テストクラスで動作しますか?(MSバージョンはありません)? –

+0

"これはテスト間で状態を共有しないのに役立つかもしれません"と言いますと、* TestFixture *クラスの意味ですか、同じTestFixtureの* Test *メソッドですか? –

+1

テストプロジェクトでNDependをまったく実行しません。私はテストコードで決して実稼動コードでNDependを実行しません。 – Steven

答えて

0

興味深い!これまでにNDepend分析を適用してみたことはありませんでした。単体テストはコードベースの第一級市民とみなされるべきですが、通常はアプリケーションでデプロイされないため、同じアーキテクチャ上の制約(FxCop、NDependなど)では表示されません。あるレベルでは、私はこのアプローチに同意しますが、テストの品質を検証する必要がありますが、生産コードでも識別されるクラス結合問題を特定する以外にツールが提供できるメリットはわかりません。

NUnitに関しては、通常、そのテストクラス内のすべてのテストメソッドに対してtestfixtureの単一インスタンスをインスタンス化します。状態で、テスト間で共有されています。それは良いことと悪いことです。

Good:テストフィクスチャを設定すると、作成に時間がかかることがあります。

不良:テスト間でリセットする必要がある状態は、テスト間で解決する必要があります。

NUnitがテスト用の静的メソッドをサポートしていて、テストフィクスチャ内に状態が必要な場合、これらのフィールドは静的である必要があります。あなたのテストの状態がテストappDomainの生涯にわたって共有されているので、実際は本当に恐ろしいことです。

キーは、フィクスチャとテスト初期化/ティアダウンにNUnit属性を使用することです。 NUnitフレームワークがクラ​​スを作成するときに制御できないので、フィクスチャの初期化にコンストラクタやファイナライザを使用しないでください。

1

間のコースの試験方法間の状態を共有します。

これは成功のためのレシピではないことに注意してください。

関連する問題