1

すべての単体テスト (nunit を使用) に使用している別のクラス ライブラリがあります。テスト プロジェクトには、テスト オブジェクトを作成するヘルパー クラスがあります。これらのオブジェクトを設定するとき、内部としてマークしたいくつかの値を設定する必要があります。私がこれを行う理由は、これらのオブジェクトが実際にはワークフローの一部であるためです。それ以外の場合は、実際にワークフローを実行することによってのみこれらのプロパティの状態を達成することができ、単体テストのアイデアを殺してしまいます。

たとえば、私が最初にテストしている方法です。特定の承認が行われたかどうかを確認し、行われた場合は、チェーンの次のステップに移動します (または、次の承認が受信されたかどうかを確認し、チェーンを下っていきます)。そうでない場合は、承認が必要な人に再割り当てします。

そこで私がやっていることは、このプロセスの特定の段階にあるテスト チケットを作成することです。たとえば、最初のテストでは、最初の承認者が承認していないメソッドを実行し、その人に再割り当てされることを確認します。次のテストは、承認者が承認した場所で実行され、ツリーの下に移動することを確認します。

私が明らかに直面している問題は、テスト クラスが別の名前空間にあるため、内部プロパティにアクセスできないことです。これに回避策があるのか​​ 、それとも私をこのコーナーに追い込んでいる他の基本的なものを見逃しているのか(デザインの匂い?) はわかりません。一般的に、公開 API のテストのみを作成したいと考えていることは承知していますが、私のテストの一部では、プライベート フィールドの設定を行う必要があります。

助言がありますか?

4

1 に答える 1

3

InternalsVisibleTo属性を使用して、UnitTest アセンブリがそのクラスの内部プロパティにアクセスできることを指定できます。

これにより、テストと「実際の」アセンブリが緊密に結合されますが、これで機能するはずです。

于 2012-07-30T16:21:55.020 に答える