2012-10-01 13 views
29

Próbuję przetestować przenośną bibliotekę klas, którą utworzyłem i chcę się upewnić, że jest testowana z tym samym podzbiorem ramki, którego dotyczy.Jak utworzyć zespół testowania jednostkowego dla biblioteki przenośnej klasy .NET?

Per the Visual Studio ALM + Team Foundation Server blog, szkielet testowy jednostki MSTest został przekonwertowany na PCL w Visual Studio 2012 RC; jednak nie jestem w stanie utworzyć przenośnej biblioteki klas, a następnie odwołać się do struktury MSTest w VS2012 RTM.

  • Przeglądanie w oknie dialogowym "Referencje" pokazuje, że żadne komponenty testowania jednostek nie są zarejestrowane jako zgodne z PCL.
  • Dodanie ręcznego odwołania do GAC w pliku projektu do Microsoft.VisualStudio.QualityTools.UnitTestFramework daje referencję, która nie odnalazła błędu kompilacji.
  • Dodanie instrukcji ręcznego bezpośredniego montażu do C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll dostarcza ostrzeżenia o kompilacji, mówiącego, że zestaw UnitTestFramework odwołuje się do niekompatybilnej wersji mscorlib.

znalazłem (dzięki wczesnej odpowiedzi), że nie jest typem projektu Unit Test Library (Windows Store apps) że odwołuje się inny montaż MSTest na C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll. Ten typ projektu tworzy małą aplikację Windows Store bez interfejsu użytkownika ... zawierającą manifest i wszystko. Nie pozwala mi też określać ram, na które kieruję reklamy - wygląda na to, że są one przeznaczone tylko dla aplikacji Windows Store.

Pod potencjalnie wadliwego założeniu, że należy testowania moich projektów Portable Class Library z jednostek badawczych zespołów kierowanych ten sam podzbiór ramową jako biblioteka-under-test ...

Jak utworzyć zespół testów jednostkowych dla biblioteki przenośnej klasy .NET Portable?

(jestem otwarty na innych forach, że kierować również PCL, jestem obecnie nieświadomi innych rozwiązań oprócz MSTest które brały to pod uwagę.)

Odpowiedz

0

przenośna biblioteka test jest pod Windows 8 SDK znajduje się tutaj (dla mnie):

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll 

Zobaczysz, że ma klasę Assert i niezbędne atrybuty [TestXXX]. Jeśli utworzę projekt biblioteki przenośnej i doda odniesienie do tego zestawu, program testowy programu Visual Studio wyświetli testy oznaczone atrybutem [TestMethod], ale nie wykona ich.

+0

Nie jestem pewien, w jaki sposób pomaga to wnioskodawcy tutaj? Jeśli próbujesz zadać pytanie, podaj szczegóły i otwórz nowe pytanie. –

+0

Wygląda na to, że "właściwą" drogą do tego odniesienia do zestawu jest wykonanie Plik -> Nowy projekt -> Sklep Windows -> Biblioteka testów jednostkowych (aplikacje Windows Store). To pozwala biegaczowi testowemu wykonać testy. Oczywiście tworzy to pełną "aplikację" z manifestem i wszystkim, co nie jest tak naprawdę "przenośną biblioteką klasową". Zobaczę, czy mogę znaleźć inny sposób, który jest bardziej "oficjalnie" obsługiwany. Jeśli nie, to może jest to tak bliskie odpowiedzi jak ja? –

+0

Zaktualizowałem moje pytanie powyższymi informacjami. Naprawdę mam nadzieję, że otrzymam odpowiedź, w której jestem w jakiś sposób upoważniony do określenia ram, na które celuję, ale może to za dużo. Zobaczymy. –

2

O ile wiem, w tej chwili nie ma bibliotek PCL do testowania jednostkowego.

ale znalazłem ten projekt na github, który wydaje się obiecujący i cele dokładnie to, czego potrzebujesz:

https://github.com/jbtule/PclUnit

Wynika z tej samej jednostce styl test jako NUnit ale również pożyczonych niektóre rzeczy z xUnit, tak jak powinno być dość łatwe do dostosowania się do niego.

4

xUnit obsługuje teraz testowanie jednostek PCL; http://xunit.github.io/

+0

Czy możesz wskazać mi dokumentację pokazującą, jak sprawić, aby testy działały w odniesieniu do docelowego podzbioru ramek, a nie na pełnym .NET 4.5 tylko z zestawem testowym jednostki PCL? Z tego co widzę, obsługa xunit służy tylko do zapisania twojego zestawu testowego jako PCL, nie zapewniając, że runner również zostanie uruchomiony w tym podzbiorze ... ale mógłbym brakować dokumentów. –

+1

Teraz lepiej rozumiem, czego szukasz ... Dotykasz testowania niewłaściwej rzeczy; jeśli kod jest zgodny PCL. powinien działać tak samo na każdej platformie. Zwłaszcza z punktu widzenia testów jednostkowych uważam, że nie powinieneś przejmować się platformą. Jednak jeśli robisz testy integracyjne, platforma ma znaczenie. Wtedy XUnit prawdopodobnie nie pomoże ci teraz.Ale spójrz na: https://github.com/xunit/devices.xunit Możesz tam wnieść swój wkład. – noocyte

+1

Znaleźliśmy podczas utrzymywania Autofac, że oprzyrządowanie PCL nie jest nieomylne. Czasami może wybrać niewłaściwy podzbiór platformy. Uruchomienie testów na rzeczywistym podzbiorze platformy pomogłoby w sprawdzeniu poprawności działania. –

0

Mam uniwersalną aplikację dla Windows Store & Windows Phone zawierający jeden PCL z moimi ViewModels. Właśnie utworzyłem projekt testu jednostkowego i dodałem viewmodel jako "połączony plik".To tylko mały test, który sprawdza ciąg w aplikacji Hello World, ale wygląda na to, że działa.

Tylko czas pokaże, czy to rozwiązanie spełnia moje przyszłe potrzeby testowania.

1

Podążając ostatnio za tym pytaniem, próbowałem przygotować nowe rozwiązanie i mam teraz Portable Class Library, który mogę teraz przetestować w jednostce. Nie mogę sobie przypomnieć, co dokładnie Próbowałem wcześniej, ale tutaj jest to, co mam działa teraz:

  • Visual Studio Premium 2013 Update 4
  • Jeden projekt typu projekt stanowi Portable Class Library
  • Jeden Okna
  • One uniwersalna aplikacja składająca się z jednego systemu Windows, jeden Windows Phone i ....Shared projekt
  • jeden projekt testowy Jednostka

Projekt ...Shared z uniwersum jest pusty oprócz pliku App.xaml, więc do tej pory tak naprawdę nie jest używany.

Wszystkie projekty zawierające interfejs użytkownika odnoszą się do projektu typu Portable Class Library i wszystkie działają z użyciem tego samego kodu.

Projekt testowy Jednostka odwołuje się również kod z Portable Class Library dodałem odniesienie zwykły sposób (prawy przycisk myszy na References, Add reference a następnie wybierz projekt PCL od Solution -. Projects

Struktura rozwiązaniem jest jako pokazano na poniższym zrzucie ekranu:

enter image description here

nie jestem do końca pewien, co problem był, kiedy starał się cały PCL testów jednostkowych rzecz pracy w ubiegłym roku, ale teraz wydaje się działać tak, jak powinien.

Zapraszam do poproszenia o więcej informacji w razie potrzeby, postaram się pomóc, jeśli to możliwe.