2017-12-06 8 views
2

data.xmlというファイルがあります。私はこれを私のアプリケーションに関連して開きたいと思います。例えば、File.Open(data.xml)を使って自分のエクステンションのすぐ隣から始めましょう。 Visual Studio(2017)プロジェクトに既存のリソースとしてファイルを追加し、ビルド時に出力ディレクトリにコピーするように設定しました。これは機能します。NUnitでテストするときにデータファイルをどのように扱うべきですか?

私の問題は、メインプロジェクトを参照して、自分のNUnitテストを含むソリューションに2番目のプロジェクトがあることです。テストを実行する前にこれがビルドされると、ではなくコピーdata.xmlがテストバイナリディレクトリにあり、ファイルを開くことができないためテストが失敗します(明らかに)。

単体テストの際に外部ファイルをどのように処理すればよいですか?私は絶対パスを使わない方が好きです。

+2

ファイルをテストプロジェクトに[リンクされたファイル]として含めることができます(https://blogs.msdn.microsoft.com/jjameson/2009/04/02/linked-files-in-visual-スタジオソリューション/)? – stuartd

+0

ファイルを埋め込みリソースとして作成することができます。 – lloyd

答えて

0

データファイルがテストだけでなくアプリケーションによって使用されていることを意味すると思います。 VSは、アプリケーションをテスト出力ディレクトリにコピーするとき、あなたが見たように他のものをコピーしません。

ここに行くには、いくつかの方法があります...

  1. は、テスト出力ディレクトリにアプリの出力ディレクトリからファイルをコピーするために、あなたのテストプロジェクトにポストビルドステップを追加します。これは動作しますが、維持するのが面倒です。私はそれをお勧めしません。

  2. リソースをアプリケーションに埋め込み、外部ファイルではなくリソースを使用するように変更します。欠点は、データへのアクセス方法に応じてアプリ内で複数の変更が必要になることです。ファイルを変更すると、再コンパイルせずにアプリケーションの動作がただちに変更されるという意図がある場合は、まったく動作しません。

  3. 一方または両方のアプリケーションを共通の出力ディレクトリを使用するように変更します。こうすることで、データが変更されるたびにコピーされ、すべてのテストで使用できるようになります。それは私が一般的に状況を扱うのが好きなやり方です。

関連する問題