2013-06-14 11 views
8

PCLライブラリでNUintをうまく動かすためにあらゆる種類の問題を抱えているようです。私のPCLライブラリは、.NET 4.5、Silverlight 4以降、Windows Phone 7.5、Windows Store、Mono for Android、MonoTouch(Xamarinの最後の2つ)を対象としています。しかし、NUnitをNuGet経由でプロジェクトに追加しようとすると、追加されたように見えますが(nunit.frameworkは参照に追加されます)、NUnit名前空間は利用できません。私がしようとusing NUnit.Frameworkを追加する場合、Visual Studioは、それを強調し、私がしようとするとビルドする場合、私は、この警告と一緒に見つけることができませんNUnit名前空間に関するエラーが表示されます。NUnitをPCLで使う

Warning 2 The primary reference "nunit.framework" could not be resolved because it has an indirect dependency on the framework assembly "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETPortable,Version=v4.0,Profile=Profile104". To resolve this problem, either remove the reference "nunit.framework" or retarget your application to a framework version which contains "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089". 

はNUnitのは、のPCLで動作することができますか? mvvm crossチュートリアルは確かにそれを管理しているようです。

私はテスト用のプロジェクト(通常のクラスライブラリ)を作成しようとしましたが、NUnitを追加することはできますが、PCLライブラリ(テストしたいライブラリ)への参照を追加できないようです。それもどちらも助けにならない。

アイデア?

+2

あなたが参照しているMvvmCrossプロジェクトを詳しく見ると、テストユニットプロジェクト自体がPCLではなく.NET 4.5プロジェクトであることがわかります。 NUnit自体はPCLアセンブリではないので、私が知る限り、NUnitはPCLプロジェクトで参照することはできません。この戦略では、テストの対象となるNUnitとPCLライブラリを参照するプラットフォーム固有の(たとえば、.NET 4、4.5)ユニットテストプロジェクトを作成することが必要です。それでも問題が解決しない場合は、PCLライブラリが単体テストプロジェクトのプラットフォームをターゲットにしていることを確認してください。 –

+2

Anders氏によると、NUnitはPCLアセンブリでテストを書くことをサポートしていません。 PCLテストに関する一般的な質問については、私の答えを参照してください:http://stackoverflow.com/questions/16973411/portable-class-library-testing –

答えて

3

この引数には欠陥がありますが、私はそれがとにかく...

は先に行くと書いて、.NET 4.5のライブラリにあなたのユニットテストを実行し、そこから自分のPCLライブラリを参照するようになります。ユニットの目標は、ロジックをテストすることです。異なるPCLのターゲットバージョン(実装されていないメソッドなど)によってはいくつかの点が異なるかもしれませんが、この方法でコードをテストすると99%のケースがカバーされます。

さらに、ロジックの真のテストをしたいのであれば、テストしたいデバイスでユニットテストを実行してから、OSの各バージョンと潜在的に異なるCPUが異なるデバイスなどどこまで行きたいですか?

「通常の」テストライブラリからPCLへの参照を追加できなかったとお伝えしました。どのようなエラーが表示されますか?私はこのアプローチを使って自分のPCLロジックをテストしていますが、それは魅力的ですが、おそらく完璧ではありませんが、デバイス上で状況が異なり、失敗するケースが1%あります...私は、サーバに :-)

関連する問題