0

テスト対象のメソッドがパスが存在するかどうかを検証するテストケースを作成しています。パスは、アセンブリが出力されているフォルダーにあります。したがって、フォルダーパスをstring assemblyLocation = typeof(ReportViewer).Assembly.Loaction;として取得するコードがあります。

ReportViewerは同じアセンブリに存在します。テストケースを実行すると、実行元のアセンブリテストケースのフォルダーのパスが選択されてしまいます。

アプリを実行すると、テスト対象のメソッドは正しいパスを返しますが、テストケースでは、テストアセンブリのパスが返されます。なぜ手がかりはありますか?

テストフレームワークとしてMSTestを使用しています。

4

1 に答える 1

0

使用している単体テスト フレームワークを指定しませんでしたが、Visual Studio Professional (およびそれ以降) の組み込みテストでは、テストはテスト結果の出力ディレクトリにあるテスト アセンブリから実行され、参照されているすべてのアセンブリがそこにコピーされます。

参考までに、コードが参照されていないアセンブリ (リフレクションまたはアンマネージド アセンブリで読み込まれる) または実行ディレクトリにある必要があるその他のリソースに依存している場合は、テストのクラス初期化 (前に実行される) 中にそれらをそこにコピーする必要があります。コンストラクタ)。

これにより、テスト環境の柔軟な構成が可能になります (たとえば、別個の app.config ファイル)。

編集 - コメントに返信:

コードは正しい結果 - 実行ディレクトリを返します。bin ディレクトリを探している理由は、そこにいくつかのリソースがあるためだと思います。この場合、テストを開始する前に (テストのクラスのクラス初期化メソッドで) それらをテストの out dir にコピーします。

于 2011-06-22T19:34:37.737 に答える