1

テスト プロジェクトでいくつかの相互作用テストを行い、いくつかの xml 構成ベースのコンポーネントをテストしたいと考えています... コードでテスト プロジェクトのベース ディレクトリを見つけて、それに関連するパスを作成するにはどうすればよいですか? テスト xml ファイルを含むサブ フォルダーが必要です。

ありがとう

編集:

Assembly.GetExecutingAssembly().Location を使用しました。これにより、テストを実行したときの出力フォルダーが得られます。アセンブリと共にそのディレクトリに移動するように xml ファイルを構成する必要があります。

4

3 に答える 3

2
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

アプリケーションのファイル パスを取得します。これを使用して、そのディレクトリに XML ファイルをロードできます。

プロジェクト フォルダーについて厳密に話している場合は、それが bin\debug にあると仮定して、末尾に "....\" を追加するだけです。

于 2009-12-14T04:26:48.663 に答える
2

プロジェクトルートへの相対パスを使用できるはずです。例: doc.Load(@"somedir\my.xml");。問題は、どのテスト フレームワークを使用しているのかということです。NUnit では、ほとんどのテスト ランナー (TestDriven.NET、R# などの IDE 内) は、プロジェクト アイテムのプロパティを使用するだけです。したがって、「出力ディレクトリにコピー」が「常にコピー」または「新しい場合はコピー」であることを確認してください。

一部の VS SKU に同梱されている組み込みの MSTest ランナーの場合は、状況が異なります。test-fixture で testrunco​​nfig または属性を使用して、何をデプロイするかを指示できます。ばかげている、IMO。testrunco​​nfig の場合は、testrunco​​nfig をダブルクリックして [Deployment]、[Add File...] の順に選択します。属性については、必要に応じて[DeploymentItem]- 次のように:

[TestClass, DeploymentItem(@"foo\bar.xml")]
public class SomeTestClass {
    ...
}
于 2009-12-14T04:58:33.957 に答える
1

Application.StartupPath も機能しないと思いますか?

要件が欠けている可能性がありますが、出力をどこに置くかをテストに伝えることができない理由はありますか?

于 2009-12-14T04:58:10.350 に答える