複数の .exe と複数の .config ファイルを持つプロジェクトがあります。プロジェクトは .Net Framework にあり、Windows アプリケーションです。Nunit テスト用にこのプロジェクトをビルドしました。構成ファイルでいくつかのキーを定義する必要があります。では、どの構成ファイルが Nunit によって使用されているかをどのように知ることができるかを知りたいですか? app.config ファイルはありません。app.config 以外の名前を持つすべての構成ファイル。
3 に答える
現在のConfiguration
オブジェクトを取得してみてください:
Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
次に、config.FilePath
ロードされている .config ファイルが表示されます。
アップデート:
プロパティから返される値はFilePath
、現在のアセンブリの既定の場所です。現在のアセンブリは NUnit によって読み込まれるため、これはアプリケーションで通常使用される場所ではありません。
あなたの問題を解決するには、
指定した場所から常に構成をロードします。
Configuration config = ConfigurationManager.OpenExeConfiguration(path);
NUnit を使用して、テスト構成ファイルをファイル パス内の場所にコピーします。
File.Copy(testConfigFile, config.FilePath);
NUnit を使用して、テスト自体でテストするキーを設定します。
ConfigurationManager.AppSettings.Add("key", "value");
実際には、.config ファイルのこれらの行を使用して、ユニット テストに NUnit 2.6.2 を使用していました。
<configuration>
<configSections>
<sectionGroup name="NUnit">
<section name="TestRunner" type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>
</configSections>
<NUnit>
<TestRunner>
<!-- The ApartmentState value here is ignored. -->
<add key="ApartmentState" value="STA" />
</TestRunner>
</NUnit>
</configuration>
ただし、NUnit 2.6 はテスト構成ファイルから設定を読み取らなくなりました。そのため、Assemblyinfo.cs ファイルに属性 [assembly: NUnit.Framework.RequiresSTA] を追加する必要があります。
あなたがしなければならないことは、構成ファイルを開いて値を更新し、再度保存するメソッドを作成することです。NUnit は実際の構成ファイルを読み取らないため、おそらく 2 つの場所に保存する必要があります。ファイルで更新された値に対して期待値をアサートする必要がある場合は、2 つ目の場所をテスト目的で使用できます。また、特定の外部依存関係をモックすることを検討することもできます。NUnit は実際に作業しているクラスをテストする必要があるためです。