11

簡単にするために、通常、多くの構成 (つまり、app.config と web.config の内容) を別々の .config ファイルに分割し、「configSource」属性を使用してメインの構成ファイルからそれらを参照します。例えば:

<appSettings configSource="appSettings.config"/>

次に、すべてのキーと値のペアを、メインの構成ファイルにインラインで配置する代わりに、その appSettings.config ファイルに配置します。

<appSettings>
    <add key="FirstKey" value="FirstValue"/>
    <add key="SecondKey" value="SecondValue"/>
    ...
</appSettings>

これは通常、アプリケーション自体ではうまく機能しますが、何らかの理由で、これらの外部ファイルのいずれかに保存されている構成セクションから何らかの値を取得する必要がある単体テストを作成しようとすると、問題が発生します。(これらのほとんどは構成システムに依存しているため、「統合テスト」と見なされる可能性が高いことを理解しています。「純粋な単体テスト」もありますが、それらは問題ではありません。私は本当に探していますこれらの構成値が正しく取得され、正しい方法で動作に影響を与えることをテストします)。

MSTest が出力をコンパイルして難読化されたように見えるフォルダーにコピーする方法が原因で、テストの実行ごとに異なります (ご想像のとおり「bin」フォルダーではなく)、テスト中にこれらの外部ファイルを見つけることができないようです。実行中です。これを機能させるためにビルド後のアクションをいじってみましたが、うまくいきませんでした。これらの外部ファイルを実行時に正しい出力フォルダーにコピーする方法はありますか?

4

3 に答える 3

11

それを見つけた:

テスト実行構成を編集すると (新しい単体テストを追加するときに 'Solution Items' ソリューション フォルダーに配置される .testrunco​​nfig ファイルをダブルクリックして)、テスト実行構成ダイアログが表示されます。'Deployment' と呼ばれるセクションがあり、ソリューション内の任意の場所からファイルまたはフォルダー全体を指定して、実行時にコンパイル済みアセンブリと共に正しいフォルダーにコピーできます。

このようにして、構成の大部分を 1 セットの外部 .config ファイルで実際に定義し、各テストの実行時にそれらを自動的にコピーすることができるようになりました。

于 2008-09-30T12:43:20.360 に答える
10

Visual Studio の外部でテストを実行しようとする場合、テスト実行構成は少し厄介です。

MSTest を使用したコマンド ライン実行では、「クリーン」な状態を維持するのが非常に面倒になります。また、ソリューションに対して「グローバル」であるため、すべてのテスト プロジェクトに対して外部ファイルがコピーされます。

DeploymentItem私は属性の方が好きです。

[TestMethod]
[DeploymentItem(@"test_data.file")]
public void FooTest()
{...}

テストを .testrunco​​nfig ファイルから独立させます。

于 2009-03-12T11:56:05.487 に答える