0

何らかの理由で、OpenCoverはWindows Server 2003(64ビット)でのほくろを使用したテストをカバーしていません。私は32ビットのWindows7マシンでそれを解決する同様の質問を提起しましたが、何らかの理由でWindowsServerマシンで環境変数を設定しても違いはありません。

CLRMONITOR_EXTERNAL_PROFILERS: 1542C21D-80C3-45E6-A56C-A9C1E4BEB7B8

x64プロファイラーに別のCLSIDはありますか?それとも、これは別の問題でしょうか?

再現する手順

次の3つの方法を使用して、VisualStudioで新しいプロジェクトを作成します。

public int method1()
{
    return 1;
}

public int method2()
{
    return 2;
}

public int method3()
{
    return 3;
}

次に、次のようなテストプロジェクトを作成します。

[TestMethod()]
public void method1Test()
{
    // Test without moles
    Program target = new Program();
    int expected = 1;
    int actual = target.method1();
    Assert.AreEqual(expected, actual);
}

[TestMethod()]
[HostType("Moles")]
public void method2Test()
{
    // Test using moles
    ConsoleApplication2.Moles.MProgram.AllInstances.method2 = (instance) => { return 3; };
    Program target = new Program();

    // method3 is only called in this test
    int check = target.method3();
    int actual = target.method2();
    Assert.AreEqual(3, actual);
    Assert.AreEqual(3, check);
}

上記をコンパイルするには、ConsoleApplication2リファレンスを右クリックして[モルアセンブリの追加]を選択し、[モルアセンブリの追加]を行う必要があります。

次のコマンドでOpenCoverを実行します。

C:\Program Files\OpenCover>OpenCover.Console.exe 
-target:"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" 
-targetdir:"S:\Work\ConsoleApplication2"
-targetargs:"/testcontainer:\"TestProject1\bin\Debug\TestProject1.dll\""
-filter:"+[*]*"
-output:results.xml
-mergebyhash

同等の64ビットマシン:

C:\Program Files (x86)\OpenCover>OpenCover.Console.exe" 
-target:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"
-targetdir:"S:\Work\ConsoleApplication2"
-targetargs:"/testcontainer:\"TestProject1\bin\Debug\TestProject1.dll\""
-filter:"+[*]*"
-output:results.xml
-mergebyhash

results.xmlファイルでReportGeneratorを実行します。

推測される結果

成功した場合(私の32ビットWindows 7マシンのように)、レポートにはmethod3がカバーされている(method2Testで呼び出されます)と表示され、次のようになります。

Windows732ビットレポート

ただし、64ビットWindows Serverで実行すると、結果は次のようになります。

WindowsServer64ビットレポート

どちらの場合も、すべてのテストに合格しますが、64ビットWindowsServerでMolesを使用したテストのカバレッジ情報は取得されていません。

これにより、問題がより明確に説明されることを願っています。さらに情報が必要な場合はお知らせください。

ありがとう、ジャック

4

1 に答える 1

0

私はあなたの指示に従いました、そして私が使用したときにあなたの結果を得ました

CLRMONITOR_EXTERNAL_PROFILERS=1542C21D-80C3-45E6-A56C-A9C1E4BEB7B8を設定します

しかし、これをに変更すると、必要なカバレッジ結果が得られました

CLRMONITOR_EXTERNAL_PROFILERS={1542C21D-80C3-45E6-A56C-A9C1E4BEB7B8}を設定します

注:中括弧を使用-GUIDを表現する通常の方法です

于 2011-08-18T13:20:01.880 に答える