22

現在、NCover から MSTest.exe を実行しようとしていますが、この質問はコマンド ラインから MSTest.exe を実行する場合にも一般的に当てはまると思います。

「/noisolation」引数がある場合、MSTest.exe は app.config を期待どおりに見つけて使用しているように見えます。これがないと、NCover はカバレッジ情報を取得できません。これまでの私の調査によると、NCover には /noisolation が必要なようです。したがって、問題は、その引数が渡されたときに *.config ファイルを機能させる方法です。

私のNCover設定は次のとおりです。

プロファイルするアプリケーション
C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe

作業フォルダー
C:\Documents and Settings\MyProfile\My Documents\Visual Studio 2008\Projects\XYZ\XYZ.CoreTest\bin\Debug

アプリケーション引数
/noisolation /testcontainer:"C:\Documents and Settings\MyProfile\My Documents\Visual Studio 2008\Projects\XYZ\XYZ.CoreTest\bin\Debug\XYZ.CoreTest.dll"



更新: 私の構成が (当然のことながら) "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe.Config" から読み取ろうとしていることを示すトレースを追加しました。

更新 2: 可能な限り、MSTest.exe.Config を編集したくありません。それはひどくポータブルではありません。

4

9 に答える 9

15

リンクテキストのコメントでCraig Stuntzから

MSTest でこれを行う方法。

  1. ソリューション エクスプローラーで、(プロジェクトではなく) ソリューションを右クリックします。

  2. [追加]、[新しいアイテム] の順にクリックします

  3. [カテゴリ] で、[テスト実行構成] を選択します。

  4. Test Run Configuration 項目を選択し、プロジェクトに追加します。

  5. ソリューション エクスプローラーで、作成したテスト実行構成をダブルクリックします。

  6. 展開アイテムをクリックします

  7. 構成ファイルを展開済みファイルとして追加します (または、必要に応じて、構成ファイルを含むフォルダー全体を展開します)。

これを理解するのに少し時間がかかりましたが、私は同様の状況にあり、うまくいきます。

于 2010-08-06T14:09:15.790 に答える
6

Visual Studioで、App.configファイルをCopyAlwaysのプロパティにマークします。(ファイルを右クリックし、プロパティを選択してプロパティパネルに移動します)

于 2009-01-29T20:09:11.810 に答える
2

MSTestRunner Pluginを使用した Jenkins ビルドでも同じ問題が発生しました。構成ページから Omit NoIsolation をチェックすると、問題が解決しました。

于 2015-10-01T10:43:21.020 に答える
1

ここで詳しく説明されている構成ファイルの内容を組み合わせることができる手法があります。固定ファイル inlcude 行を MSTest.exe.Config に追加し、アプリの app.config をその固定ファイルの場所にコピーできます。これは醜いですが、さまざまな不測の事態に備えて MSTest.exe.Config をハッキングするよりも移植性があります。

于 2009-01-30T01:28:49.887 に答える
0

app.config名前を からに変更してみてくださいprojectname.extension.**config**

たとえば、名前の付いた単体テスト プロジェクトがproj1あり、その を使用する場合dll、名前を次のように変更app.configし ます。proj1.dll.config

これは私にとってはうまくいきました。

于 2016-08-22T09:18:17.720 に答える
0

NoIsolation を使用したことはありませんが、正しく理解していれば、文字通りすべてのテスト コードが MSTest クラスで実行されます。そのため、MSTest のアプリ構成を読み取る必要があります。noisolation の使用を主張する場合は、App.config を MSTest.exe.config にマージする必要があると思います。もちろん、それはハックです。

ノイズアイソレーションは完全に避けたほうがよいでしょう。エラーが原因である場合は、可能であればエラーを修正してください。アプリの再編成 (大規模なリファクタリング) が不可能な場合は、エラーを回避してください。エレガントな代替手段があるかどうかはわかりません。

この URLで「ノイズ分離スイッチを回避するには、この問題の根本原因を見つける必要があると思います。アプリケーションを変更する必要があるかもしれません。同じ問題を再現する簡単な解決策を作成することは可能ですか?」を見つけました。

于 2009-01-29T23:42:16.890 に答える
0

混乱を解消するには: /noisolation を使用しない = SameNameAsYourDll.dll.config ファイルが見つかった場合、テスト dll と共に自動的に展開され、テストを実行するアプリ ドメインのアプリ構成に使用されます。そのアセンブリ

/noisolation を使用 = テスト間、ユーザー、ホスト プロセス、およびその他すべての分離をすべて実行します。まだいくつかの分離を行う可能性がありますが、アプリ ドメインがテスト DLL に固有であるという追加の利点は得られません。したがって、dll の設定は役に立ちません。

于 2009-02-14T06:48:32.787 に答える