2013-06-14 10 views
8

Wydaje mi się, że mam wiele problemów, próbując sprawić, by NUint grał dobrze z biblioteką PCL. Moja biblioteka PCL jest przeznaczona dla bibliotek .NET 4.5, Silverlight 4 i wyższych, Windows Phone 7.5, Windows Store, Mono dla Androida i MonoTouch (dwa ostatnie z Xamarin). Jednak kiedy próbuję dodać NUnit do projektu przez NuGet, wygląda na to, że zostanie on dodany (nunit.framework zostanie dodany do referencji), ale przestrzeń nazw NUnit nie jest dostępna. Gdyby spróbować i dodać using NUnit.Framework, Visual Studio podkreśla go i gdybym spróbować zbudować pojawia się błąd o nazw NUnit nie można znaleźć wraz z tym ostrzeżeniem:Używanie NUnit z 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 można pracować z PCLS? Samouczki mvvm cross z pewnością wydają się nim zarządzać.

Próbowałem stworzyć oddzielny projekt do testowania (zwykła biblioteka klas) i mogę dodać NUnit do tego, ale wtedy nie mogę dodać odniesienia do mojej biblioteki PCL (tej, którą chcę przetestować), więc to też nie pomaga.

Wszelkie pomysły?

+2

Jeśli przyjrzysz się bliżej projektowi MvvmCross, do którego się odwołujesz, zobaczysz, że projekt jednostki testowej nie jest projektem PCL, ale projektem .NET 4.5. O ile mi wiadomo, NUnit nie może się odwoływać do projektu PCL, ponieważ sama NUnit nie jest zbiorem PCL. Strategia powinna raczej polegać na stworzeniu projektu testu jednostkowego (np. .NET 4, 4.5), który odwołuje się do biblioteki NUnit i biblioteki PCL. Jeśli nadal masz problemy, czy na pewno biblioteka PCL jest skierowana na platformę projektu testów jednostkowych? –

+2

Jak mówi Anders, NUnit nie obsługuje pisania testów w zespole PCL. Zobacz moją odpowiedź na następujące pytanie dotyczące ogólnie testów PCL: http://stackoverflow.com/questions/16973411/portable-class-library-testing –

Odpowiedz

3

Argument ten ma wady, ale zrobię to w każdym razie ...

Śmiało i napisać i uruchamianie testów jednostkowych w .NET 4.5 biblioteki i odwołać swoją bibliotekę PCL stamtąd. Celem urządzenia jest sprawdzenie jego logiki. Chociaż prawdą jest, że niektóre rzeczy mogą być różne dla różnych wersji docelowych PCL (metody nie zaimplementowane itp.), Podejrzewam, że testowanie twojego kodu w ten sposób obejmie 99% przypadków.

Poza tym, jeśli chcesz "prawdziwy" test logiki, musisz uruchomić testy jednostek na urządzeniach, które chcesz przetestować ... i wtedy każda wersja systemu operacyjnego ... i potencjalnie inna urządzenia z różnymi procesorami itd. Jak daleko chcesz się posunąć?

Wspomniał Pan, że nie można dodać odniesienia do PCL z "zwykłej" biblioteki testowej ... jaki błąd pojawia się? Używałem tego podejścia do testowania mojej logiki PCL i działa jak urok, może nie jest idealny, ale dla 1% przypadków, gdy rzeczy są różne na urządzeniu i rzeczy się nie udają ... Mam wyjątek uprzęży, która loguje na serwer :-)