MonoDevelopで簡単なプロジェクトを設定し、そこからテストを正常に実行できます(*)。
コマンドラインからnunit-console.exeを試してみると、次のようになります。
.../mono2/bin/Debug$ nunit-console mono2.exe
NUnit version 2.5.10.0
...
Runtime Environment -
OS Version: Unix 2.6.32.44
CLR Version: 2.0.50727.1433 ( 2.10.8.1 (Debian 2.10.8.1-1~dhx1~lucid1) )
ProcessModel: Default DomainUsage: Single
Execution Runtime: Default
Unhandled Exception:
System.ArgumentException: NUnit components for version 4.0.30319 of the CLR are not installed
...
重要なことを省略した場合は、お知らせください。
nunit-guiでも同じエラーが発生しました。nunit-guiには2.0から4.0に切り替えるオプションがありますが、試してみると同じエラーが再度表示されるため、変更できません。
詳細:Ubuntu 10.04、http://badgerports.org/lucid.htmlリポジトリを使用しているため、Mono2.10.8.1。
プロジェクトは、MonoDevelopのプロジェクトオプションに従って「Mono/.NET4.0」を使用するように設定されています。
より詳しい情報:
/ usr / bin/nunit-consoleには次のものが含まれています。
#!/bin/sh
exec /usr/bin/cli /usr/lib/nunit/nunit-console.exe "$@"
また、/ usr / lib /nunit/ディレクトリには次のものが含まれます。
3073 2011-03-14 18:13 nunit.exe.config
2598 2011-03-14 18:13 nunit-console.exe.config
23040 2012-02-29 10:19 nunit-console-runner.dll
4608 2012-02-29 10:19 nunit-console.exe*
76288 2012-02-29 10:19 nunit.uiexception.dll
259072 2012-02-29 10:19 nunit.uikit.dll
183808 2012-02-29 10:19 nunit-gui-runner.dll
4096 2012-02-29 10:19 nunit.exe*
また、nunit-console.exe.configには次のものが含まれています。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<!-- We need this so test exceptions don't crash NUnit -->
<legacyUnhandledExceptionPolicy enabled="1" />
<!-- Look for addins in the addins directory for now -->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib;addins"/>
</assemblyBinding>
<!--
The following <assemblyBinding> section allows running nunit under
.NET 1.0 by redirecting assemblies. The appliesTo attribute
causes the section to be ignored except under .NET 1.0
on a machine with only the .NET version 1.0 runtime installed.
If application and its tests were built for .NET 1.1 you will
also need to redirect system assemblies in the test config file,
which controls loading of the tests.
-->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
appliesTo="v1.0.3705">
<dependentAssembly>
<assemblyIdentity name="System"
publicKeyToken="b77a5c561934e089"
culture="neutral"/>
<bindingRedirect oldVersion="1.0.5000.0"
newVersion="1.0.3300.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Data"
publicKeyToken="b77a5c561934e089"
culture="neutral"/>
<bindingRedirect oldVersion="1.0.5000.0"
newVersion="1.0.3300.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Drawing"
publicKeyToken="b03f5f7f11d50a3a"
culture="neutral"/>
<bindingRedirect oldVersion="1.0.5000.0"
newVersion="1.0.3300.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Windows.Forms"
publicKeyToken="b77a5c561934e089"
culture="neutral"/>
<bindingRedirect oldVersion="1.0.5000.0"
newVersion="1.0.3300.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Xml"
publicKeyToken="b77a5c561934e089"
culture="neutral"/>
<bindingRedirect oldVersion="1.0.5000.0"
newVersion="1.0.3300.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
*:ええと、もっとエキゾチックなNunit属性を使おうとすると問題が発生します。それが私がトラブルシューティングしようとしている本当の問題であり、それが私を上で説明した問題に導きます。ただし、上記で使用されているexeは、MonoDevelopで正常に機能する2つの簡単なテストを含むものです。