9

TryTestingOSX 上の MonoDevelop(MD) (3.0.4.6) で呼び出される C# NUnit テスト ライブラリを作成した場合、ターミナル/コマンド ラインからこれらのテストをどのように実行すればよいでしょうか (自動ビルドに追加できるようにするため)。

一般式は次のとおりであることを知っています。

nunit-console .../TryTesting/bin/Debug/TryTesting.dll

また

mono nunit-console.exe .../TryTesting/bin/Debug/TryTesting.dll

ただし、MonoDevelop をインストールしたときに作成される環境を考えると、それだけでは不十分です。

次の出力とエラーが表示されます。

NUnit version 2.4.8
Copyright (C) 2002-2007 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved.

Runtime Environment - 
OS Version: Unix 12.1.0.0
CLR Version: 2.0.50727.1433 ( 2.10.9 (tarball Mon May  7 20:25:51 EDT 2012) )

Missing method .ctor in assembly /private/var/folders/r6/wqmfjz8142z0z9vcg_7k9y140000gn/T/nunit20/ShadowCopyCache/3688_634830482326369170/Tests/assembly/shadow/52c5f76b/6c545c94_3e91abff_00000001/TryTesting.dll, type NUnit.Framework.TestFixtureAttribute
Can't find custom attr constructor image: /private/var/folders/r6/wqmfjz8142z0z9vcg_7k9y140000gn/T/nunit20/ShadowCopyCache/3688_634830482326369170/Tests/assembly/shadow/52c5f76b/6c545c94_3e91abff_00000001/TryTesting.dll mtoken: 0x0a000003
Could not load file or assembly 'nunit.framework, Version=2.6.0.12051, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77' or one of its dependencies.

実験の結果、この問題は /usr/bin と MD の間で nunit のバージョンが一致していないことが原因であると思われます。最新の NUnit バイナリをダウンロードし、プロジェクトの nunit.framework 参照をダウンロードしたコピーを指すように置き換えると、ダウンロードした nunit-console.exe を使用して実行できます。

したがって、おそらく問題は次のとおりです。

  • nunit.framework への自動参照を削除し、NUnit の独自のディストリビューションをソース ツリーに含める必要がありますか?
  • または、MonoDevelop には、呼び出す必要がある一致するバージョンの nunit-console がありますか?
4

3 に答える 3

4

複数の環境で単体テストを実行した経験が豊富なためnunit.framework、MonoDevelop (または Xamarin Studio) に付属するものを参照しないことをお勧めします。その IDE 内でのみテストを実行する場合は問題ありません。ただし、コマンド ライン、別の環境、またはビルド ボックスからテストを実行する場合は、NUnit のバージョンを制御する必要があります。

したがって、[新しいプロジェクト] ダイアログから新しい NUnit ライブラリを作成する場合は、提供されたnunit.framework参照を削除して、独自のものに置き換える必要があります。

また、NUnit テスト ランナーはアセンブリのバージョンに非常に敏感であることにも注意してください。したがって、すべての NUnit バイナリをソース ツリーにまとめる必要があります。(NUnit-2.6.1/bin の重量は 7 MB です)

また、NUnit のバージョンに影響されるNAnt <nunit2>Taskなど、テストを実行する他の方法があることにも注意してください。

したがって、NUnit 2.6.1* をソリューション ディレクトリの下の packages ディレクトリにダウンロードすると、コマンドは次のようになります。

mono packages/NUnit-2.6.1/bin/nunit-console.exe TryTesting/bin/Debug/TryTesting.dll

*脚注: NotImplementedException のため、NUnit 2.6.2 を使用できませんでした。

于 2013-09-13T16:53:30.923 に答える
0

同様の問題がありました。

明示的な参照 (.dll) を削除し、NUnit by Nuget パッケージをインストールしました。

私のために働きます。

于 2014-01-12T12:15:22.047 に答える