2013-02-20 12 views
16

Chcielibyśmy zmierzyć zasięg kodu dla naszego własnego systemu testowania regresji uruchamianego w dość dużej natywnej aplikacji. Jest to wyrafinowany, oparty na skryptach system testowy wykorzystujący wbudowane skrypty naszej aplikacji. Ma tysiące testów i nie zostanie zastąpiony testami jednostkowymi MSTest.Czy możemy uzyskać natywny zasięg kodu C++ w VS2012 lub VS2010 bez MSTest?

Podczas gdy używamy VS2012 (Premium) jako IDE, obecnie jest on nadal kompilowany z bibliotekami kompilatorów VS2010 &. To może się zmienić wcześniej, jeśli jest to warunkiem wstępnym do uzyskania zasięgu kodu.

Możemy zrobić dla tego oddzielne kompilacje - oprzyrządowanie nie stanowi problemu.

Jestem po prostu zdezorientowany czytając dokumentację MS, która wydaje się, że wszystko zaczyna się od założenia, że ​​używasz testów jednostkowych z wykorzystaniem wbudowanego szkieletu testowego. Właśnie wtedy nie walczę o znalezienie rzeczy, które w rzeczywistości mówią o natywnym wsparciu dla ALM!

dzięki

pokrycie kodu narzędzie
+0

afaik jest to możliwe tylko w wersji ostatecznej (lub innej najdroższej wersji VS) wersji wizualnego studia. Zbadaliśmy również na ten temat (aby zabić kompilacje unix/jenkins wykonujące kodowanie kodu) i utknęliśmy w coverach unix. – Najzero

+0

Dzięki. Mamy Premium wdrożone, ale nie Ultimate. –

+1

Możesz to zrobić za pomocą VS2012 dość łatwo za pomocą narzędzia wiersza poleceń CodeCoverage. Sprawdź, czy masz go w "% ProgramFiles% \ Microsoft Visual Studio 11.0 \ Narzędzia zespołu \ Narzędzia Dynamicznego kodu". Wymaga, aby .pdbs pojawiało się na instrumentarium i nie jestem pewien, czy DIA zachowa kompatybilność wsteczną z 2010 r., Więc możesz potrzebować aplikacji zbudowanej z 2010 roku. Warto jednak strzelić. –

Odpowiedz

26

Visual Studio 2012 jest całkowicie niezależny od systemu wykonania testu (pełne ujawnienie: Napisałem ją, ale zespół, który odziedziczył go po opuszczeniu Microsoft usuwa całkiem użyteczną funkcjonalność). Został przepisany od podstaw w VS 2012, aby dynamicznie obsługiwać natywny kod (x86 i x86-64) oraz kod zarządzany (.NET i Silverlight) po wczytaniu do procesu zamiast modyfikowania plików wykonywalnych na dysku.

Program CodeCoverage.exe można znaleźć w "% ProgramFiles% \ Microsoft Visual Studio 11.0 \ Narzędzia zespołów \ Narzędzia dynamicznego kodu".

Aby zebrać dane:

CodeCoverage.exe collect /output:foo.coverage foo.exe foos_args 

plik konfiguracyjny (jest to domyślny w tym katalogu o nazwie CodeCoverage.config) można określić kontrolować kolekcję.

Aby analizować dane pokrycia, można otworzyć foo.coverage w Visual Studio 2012 lub użyć samego narzędzia pokrycia wykonać analizę:

CodeCoverage.exe analyze /output:results.xml foo.coverage 

Uwaga: dla oprzyrządowanie mieć miejsce, musi pliki .pdb być odkrytym dla twoich modułów. Ponieważ budujesz w 2010 roku, mogą one nie działać z DIA 2012, więc być może trzeba będzie odbudować zestaw narzędzi z 2012 roku. Jeśli nie widzisz modułów, których oczekujesz w analizie pokrycia, przekaż /include_skipped_modules do polecenia analizy; pojawi się atrybut "powodu" z informacją, dlaczego moduł został pominięty (wykluczony, brak informacji o debugowaniu itp.).

Edytuj: W przeciwieństwie do poprzednich wersji programu Visual Studio format pliku krycia w 2012 roku jest całkowicie niezależny. Moduły i .pdbs nie muszą być obecne w czasie analizy.

4

Zdaję sobie sprawę, że jest to stary post, ale uważam, że odpowiedź nadal ma znaczenie.

Ze wszystkimi rzeczami, które miałem do dyspozycji w C#, nie podobało mi się to, co zobaczyłem, kiedy przeniosłem się do Visual C++. Podobnie jak ty MSTests tylko częściowo działało dla mnie; Jestem również przyzwyczajony do posiadania własnych aplikacji testowych.

Zasadniczo co chciałem był następujący:

  • testy z MS lub plik EXE
  • pokrycie kodu uzyskać prawo w Visual Studio.

Po przeprowadzeniu badań zauważyłem, że VS Enterprise obsługuje tę funkcję już dziś z adapterami testowymi.

Jeśli nie korzystasz z VSE, zauważyłem, że istnieją inne narzędzia, z których każdy zapewnia użytkownikom niezależny interfejs użytkownika. Osobiście nie lubię tego; Chcę mieć zasięg w Visual Studio, najlepiej w wersji społecznościowej Visual Studio.

Postanowiłem więc sam zbudować ten dodatek i - chociaż nie jest tak wyrafinowany jak VSE - robi to dla mnie.

  • Napisałem narzędzie do pokrycia kodu VSIX na https://github.com/atlaste/CPPCoverage. Zasadniczo zarządza podświetlaniem w Visual Studio, generuje klikalny raport i integruje się z eksploratorem rozwiązań.
  • Dla samych pomiarów zasięgu użyłem https://opencppcoverage.codeplex.com/. Zasadniczo pozwala to na wykonywanie testów pokrycia kodu na każdym debuggable (native) pliku wykonywalnym. W dzisiejszych czasach używam własnych narzędzi do pomiaru zasięgu kodu (które są również dostępne w wersji open source).
+0

To jest świetny dodatek. Używam tego z projektem cmocka c, działa świetnie. – pogorman

Powiązane problemy