6

コードにこの特定の呼び出しがあり、統合単体テストを使用してテストする場合と、アプリ全体を実行する場合の構成を変える必要があることがわかりました。

#ifディレクティブを使用して単体テストからの呼び出しをチェックする方法はありますか?

#if TestMethod
...do this config
#else
...do this config
#endif

たぶん、ユニットテスト機能の属性を検出するためにどういうわけか?

4

2 に答える 2

11

いいえ、ビルドされたバイナリにコードが存在するか、存在しないためです。決定は完全にコンパイル時に行われるため、「不足している」コードを再導入するために実行時にできることは何もありません。2 つの異なるバイナリのいずれかを動的にロードし、その方法でテストを実行する必要があります。

実行時にどのルートを取るかを決定する代わりに、条件付きコンパイルを使用する必要がありますか?

于 2011-11-25T19:03:14.700 に答える
0

コードから呼び出し元のコンテキストを処理したくないでしょう。特に、その中のロジックをテストしようとしている場合。ただし、アプリケーションまたはテスト コンテキストで実行するかどうかに応じて (たとえば) 異なるパラメーターを使用して関数を実行する場合は、基本型またはインターフェイスをパラメーターとして使用するか、メソッドにタグを付けることができます。リフレクションを使用して属性を確認します。ディレクティブは、どのコードをコンパイルする必要があるかを決定するために使用されるものであり、それが意図したものであることが確実な場合にのみ使用する必要があります。

于 2011-11-25T19:04:54.523 に答える