2009-09-05 13 views
15

Szukam rozwiązania pokrycia kodu, które współpracuje z silverligt. Musi też działać z msbuild, ponieważ automatycznie wykonujemy wszystkie inne testy jednostkowe na serwerze budowania.Jak uzyskać zasięg kodu podczas testowania Silverlight

Integracja z Visual Studio i/lub resharper to plus i nie mam nic przeciwko łatwej konfiguracji lub wskaźnik do samouczka. Zwykle nie modyfikuję plików kompilacji i niestety nie mam czasu na naukę msbuild w tej chwili.

Odpowiedz

6

Niestety, ze względu na przejrzysty model zabezpieczeń (tj. Wszystkie piaskowane aplikacje) w środowisku wykonawczym Silverlight nie jest to łatwe zadanie. Tradycyjne oprzyrządowanie pokrycia kodu .NET modyfikuje podstawowy zespół, wstawiając wywołania P/Invoke do narzędzi gromadzenia pokrycia.

W rezultacie narzędzia takie jak narzędzie do programowania pokrycia kodu Visual Studio 2008 nie działają z Silverlight.

Aby osiągnąć to w Silverlight, należy zaprojektować niestandardowy program oprzyrządowania oraz sposób gromadzenia i raportowania tych danych.

W zespole Silverlight opracowaliśmy częściowe rozwiązanie, które może to umożliwić niektórym osobom, ale nie jest gotowe do wydania. Poszukaj go pewnego dnia w zestawie narzędzi Silverlight.

Przepraszam, że dziś nie znam dla ciebie odpowiedzi.

0

Według NCover FAQ może obejmować Silverlight:

[http://docs.ncover.com/ref/3-0/frequently-asked-questions/#q05][1]

tej pory nie znalazłem żadnych informacji, czy to faktycznie działa np dla bibliotek klasy Silverlight. Dziwne, że jeśli ncover działa, nie ma na ten temat żadnych informacji (posty na blogu itp.). Czy przy testowaniu kodu Silverlight wszyscy używają "Utwórz standardową bibliotekę .NET i łącz pliki do niej, aby uzyskać ścieżkę danych pokrycia"?

Jeśli chodzi o inne rozwiązania (nawet komercyjne), moje googlowanie nie przyniosło żadnych rezultatów.

1

Odpowiedź w tym miejscu brzmi Nie (jeśli Jeff Wilcox mówi: nie, to nie ;-)).

Poprosiłem NCover wspierać to pytanie jakiś czas temu (about their FAQ re Silverlight):

... Używam Silverlight 2.0 i AFAIK może działać wyłącznie w przeglądarce. Więc mówisz o SL3, czy coś przeoczyłem?

Wierzę, że SL3 wkrótce będzie RTMed. Czy po aktualizacji, czy moja aplikacja będzie mogła automatycznie uruchomić się z przeglądarki (i dlatego używać programu NCover), czy też będę musiał to zmienić?

I to jest odpowiedź dostałem:

FAQ jest dokładna, ponieważ stoi jednak sformułowania czyni ją nieco mylące. Co to jest temat FAQ, to że program NCover nie obsługuje kodowania Silverlight (v1 lub v2 lub v3) przy użyciu argumentu // iis, ponieważ wtedy działa on na własnym CLR.

Jednak zaszyfrowane i wspierające klasy aplikacji Silverlight (v1 lub v2 lub v3) są poprawne C#/VB, więc możesz pisać testy jednostkowe przeciwko tej części aplikacji i uruchamiać te testy z NUnit/MSTest/Gallio/xUnit/etc, a otrzymasz zasięg tej części.

Nie zbadaliśmy jeszcze, czy program NCover może uzyskać pokrycie Silverlight v3, gdy jest uruchamiany poza przeglądarką, ale oczekuję, że nie będziemy w stanie. Gdy już wiemy na pewno, zanotujemy to w dokumentacji.

Rozumiem, że aplikacje Silverlight nie są obsługiwane - musisz "utworzyć standardową bibliotekę .NET i powiązać z nią pliki, aby uzyskać dane pokrycia".

0

Zapytałem o to wsparcie NCover.

Moje pytanie brzmiało:

Powiedzmy tworzę silverlight klasy bibliotekę (Project -> New Project ...) z Visual Studio. W tej klasie biblioteki Mam kilka klas i używam szablonu silverlight NUnit do projektu, który zawiera testy jednostkowe dla moja klasa Silverlight Biblioteka:

http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx

jestem w stanie uruchomić testy jednostkowe dobrze (nawet w serwerze kompilacji jesteśmy przy użyciu msbuild i TFS), ale nie mogę uzyskać danych pokrycia kodu dla nich przy użyciu standardowych opcji pokrycia kodu , które są dostępne w Visual Studio.

Czy program NCover może pokazać zakres kodu dla moich bibliotek klasy Silverlight?

odpowiedzi dostałem:

Dopóki jesteś testowania biblioteki klasy z NUnit, powinieneś być w stanie pokryć je za pomocą NCover. Jeśli przetestujesz je za pomocą przeglądarki internetowej za pomocą narzędzia takiego jak Selenium, , nie będziesz w stanie uzyskać zasięgu.

Zastanawiam się teraz, czy ktoś z zespołu silverlight próbował użyć programu NCover + NUnit? Oczywiście MS ma swoją własną strukturę testów jednostkowych, więc w "sensie biznesowym" nie będzie wyglądać tak dobrze :) Ale co z testowaniem, czy to działa.

2

Wykonaj następującą procedurę i uzyskaj wyniki pokrycia kodu;

-Dodaj nowy projekt testowy do rozwiązania
-Usunąć wszystkie istniejące klasy (test bazy danych, zamówiony test itd.), Aby pozostać tylko z jednostką testową (UnitTest1).
-Usunąć wszystkie niepotrzebne komentarze i kod crud z klasy testowej, aby pozostawić tylko metodę testowania (bez komentarzy, nawet Kontekstu testu).
-Dodaj odwołanie do wersji Silverlight "System.dll", "System.Windows.dll" do projektu testowego. (zwykle znajduje się w "C: \ Program Files \ Microsoft SDK \ Silverlight \ v2.0 \ Reference Assemblies \" (usuń istniejące odniesienie do systemu.dll jeśli trzeba najpierw)
-Dodaj odniesienie do projektu badanego
-Można teraz napisać testy na model obiektowy (standardowych klasach)

Cheers,

Ref: http://weblogs.asp.net/rosherove/archive/2008/12/27/unit-testing-in-silverlight-land-with-typemock-isolator.aspx

+0

Udało mi się uzyskać to działając, upewniając się, aby odwołać się do bibliotek DLL silverlight 4.0 sdk (System.dll, System.Core.dll, System.Windows.dll) w przeciwieństwie do Zespołów .Net. [Tutaj jest wpis na blogu] (http://nileshgule.blogspot.com/2011/05/unit-test-viewmodel.html), który również to stwierdza. – leogdion

1

Aby wyjaśnić poprzednie posty, NCover może obejmować TYLKO dowolny proces .NET. To jeszcze nie obsługuje Silverlight CLR. W powyższych przypadkach jeden z użytkowników zapytał o środowisko testowe .NET, które uruchamia testy .NET, które działają w jego aplikacji Silverlight. Wszystko .NET (np. Framework testowy) zostanie uwzględniony w tym scenariuszu. Kod Silverlight NIE BĘDZIE pokryty.

Powiązane problemy