2

Visual Studioには、別のプロジェクトのクラスのメソッドを呼び出す単体テストがあります。これをMyClass.A()と呼びましょう。

A()内では、MyClassのプロジェクトプロパティの設定にアクセスします。

通常の実行時にMyClass.A()を使用すると、設定から正しい値が取得されます。ただし、単体テストから実行すると、nullが返されます。設定をコピーするために、単体テストプロジェクトでビルド後のイベントが必要ですか?

MyClass.A()で設定にアクセスする方法は次のとおりです。

string connectionString = global::DataAccess.Properties.Settings.Default.ConnectionString;

解像度

それで、問題は私が私の脳と呼ぶのが好きな濡れたトイレットペーパーの成形パイルに関係していました。MyClassには、接続文字列で設定する必要のあるパブリックプロパティがあります。Setアクセサーは、値を適切なSettingsプロパティに割り当てます。すべての回答をありがとう。

4

2 に答える 2

2

Public実際には 2 つのオプションがあります。まず、の代わりに設定を行うことができますInternal

次に、 Unit Test アセンブリを指定するメイン アセンブリにInternalsVisibleToAttributeを追加できます。

[assembly:InternalsVisibleTo("MyUnitTestLibrary")]

ちなみに、 ConnectionStringsSectionを使用して app.config に接続文字列を保存し、ConfigurationManagerを使用してそれを読み取る必要があります。

于 2012-11-27T16:04:18.793 に答える
2

接続文字列にアクセスしている場合、これは実際には単体テストのようには見えません。機能を分離できるように、接続文字列に依存する動作をモックする方がよい場合があります。ここでいくつかのテスト フレームワークを見てみましょう(私は Moq に愛着があります)。

于 2012-11-27T16:10:39.140 に答える