1

最近、MbUnitバージョン2.4.2.355を、Cruise Control.NETおよびNAntを介して実行されるビルドサーバーに、.NET Framework3.5SP1がインストールされたWindowsServer2003マシンにインストールしました。

ビルドスクリプトの隅々までチェックしましたが、CC.NETのNAnt出力レポートには、テストプロジェクトが正常にビルドされていることが示されています。

これはNAntスクリプトです。

<target name="compiletests" description="Compiles unit tests separately">
    <exec program="${netframework.dir}\msbuild.exe">
        <arg line="C:\dev\PROJ3.1\trunk\src\PROJ\Customer\CustomerUnitTests\Company.CustomerUnitTests.csproj  /t:Rebuild /p:Configuration=Debug"></arg>
    </exec>
</target>

そして出力はffです:

[exec] Company.CustomerUnitTests-> C:\ dev \ PROJ.1 \ trunk \ src \ PROJ \ Customer \ CustomerUnitTests \ bin \ Debug \ Company.CustomerUnitTests.dll[exec]プロジェクトの構築が完了しました"C:\ dev\PROJ。 1 \ trunk \ src \ PROJ \ Customer \ CustomerUnitTests \ Company.CustomerUnitTests.csproj "(ターゲットを再構築します)。[exec]ビルドが成功しました。[exec] "C:\ dev \ PROJ3.1 \ trunk \ src \ PROJ \ Customer \ CustomerUnitTests \ Company.CustomerUnitTests.csproj"(ターゲットの再構築)(1)->

これが意味するのは、単体テストアセンブリのビルドが成功したということです。

NAnt出力の最後にあるのは次のとおりです。

mbunit-tests:[mbunit]MbUnit2.4.2.355テストランナー[mbunit]テストでテストアセンブリが見つかりません

コンソールに移動し、MbUnit.Cons.Exeを使用してコンパイル済みアセンブリを手動でテストしてみました。結果は次のようになりました。

  • 私のWindowsXPSP3マシンを使用して構築されたテストアセンブリは正しく認識され、テストは私のマシン、およびその他の開発マシンで適切に実行されていました。
  • Windows Server 2003を実行しているビルドサーバーでビルドされたテストアセンブリは、テストアセンブリとして認識されていませんでした。それらのファイルをXPマシンにコピーしようとしましたが、どちらも認識されませんでした。

私は今疑問に思っています:テストアセンブリと非テストアセンブリの違いは何ですか?Testと属性に関係があると確信していTestFixtureますが、私の場合、WinXPマシンでコンパイルされたアセンブリがテストとしてコンパイルされ、Win2K3マシンでコンパイルされたアセンブリが認識されないのはなぜですか?

誰かがこれについての手がかりを持っていることを願っています。

4

2 に答える 2

4

まず、この問題を確認してください。
これで問題が解決しない場合は、ターゲット プラットフォーム (プロジェクト プロパティ、ビルド) が「任意の CPU」であることを確認する必要があります。この後、Reflector を使用してビルド マシンで生成されたアセンブリを開こうとします。生成されたファイルが破損している可能性があります。また、VS を使用してプロジェクトを手動でビルドし、生成されたテストを MbUnit にロードしてみてください。

于 2009-02-21T09:48:32.910 に答える
2

特定のアセンブリがテスト アセンブリと見なされるかどうかに関して、基本的な違いはありません。

私の推測では、開発マシンはビルド サーバーとは少し異なる MbUnit のビルドを実行していると思われます。MbUnit v2 にはバージョン間の互換性の問題があり、テストが正しく認識されない可能性があります (インストールされているものとは異なるバージョンのフレームワーク アセンブリを読み込もうとするため)。

ちなみに、これらの問題は MbUnit v3 で大部分が解決されています。

まだインストールしていない場合は、ソース ツリーに MbUnit のコピーをインストールすると役立つ場合があります。これにより、一貫したバージョンが常にどこでも使用されるようになります。

于 2009-02-09T16:26:54.210 に答える