MbUnit は、Windows Server 2003 上の MSBuild でコンパイルされたテスト アセンブリを認識できません
-
22-08-2019 - |
質問
最近、.NET Framework 3.5 SP1 がインストールされた Windows Server 2003 マシン上で、Cruise Control.NET および NAnt 経由で実行されるビルド サーバーに MbUnit バージョン 2.4.2.355 をインストールしました。
ビルド スクリプトを隅々までチェックしたところ、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 src proj customer customerunittests bin debug company.customerunittests.dll [exec done building project "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 テスト:mbunit] mbunit 2.4.2.355テストランナー[mbunit]テストで見つかったテストアセンブリはありません
コンソールに移動し、MbUnit.Cons.Exe を使用してコンパイルされたアセンブリを手動でテストしてみました。結果は次のようになりました。
- Windows XP SP3 マシンを使用して構築されたテスト アセンブリは適切に認識され、テストは私のマシンでも、さらに言えば他の開発マシンでも適切に実行されました。
- Windows Server 2003 を実行するビルド サーバーでビルドされたテスト アセンブリは、テスト アセンブリとして認識されませんでした。これらのファイルを XP マシンにコピーしようとしましたが、どちらも認識されませんでした。
私は今疑問に思っています:テストアセンブリと非テストアセンブリの違いは何ですか?きっとそれと関係があると思うよ Test
そして TestFixture
しかし、私の場合、WinXP マシンでコンパイルされたアセンブリがテストとしてコンパイルされ、Win2K3 マシンでコンパイルされたアセンブリが認識されないのはなぜですか?
誰かがこれについて手がかりを持っていることを願っています。
解決
まずはチェック この問題.
これで問題が解決しない場合は、ターゲット プラットフォーム (プロジェクト プロパティ、ビルド) が「Any CPU」であることを確認する必要があります。この後、Reflector を使用してビルド マシン上で生成されたアセンブリを開いてみてください。生成されたファイルが破損している可能性があります。また、VS を使用してプロジェクトを手動でビルドし、生成されたテストを MbUnit にロードしてみてください。
他のヒント
特定のアセンブリがテスト アセンブリとみなされるかどうかについては、基本的な違いはありません。
私の推測では、開発マシンはビルド サーバーとはわずかに異なる MbUnit ビルドを実行していると思います。MbUnit v2 には、バージョン間の互換性の問題があり、テストが正しく認識されない可能性があります (インストールされているものとは異なるバージョンのフレームワーク アセンブリを読み込もうとするため)。
ちなみに、これらの問題は MbUnit v3 でほぼ解決されています。
まだインストールしていない場合は、MbUnit のコピーをソース ツリーにインストールすると役立つ場合があります。これにより、一貫したバージョンが常にどこでも使用されるようになります。