2011-10-31 25 views
5

Napisałem aplikację Sinatra (strona internetowa) i chciałbym zebrać informacje dotyczące zasięgu kodu dla kodu witryny. Jestem nowy w Ruby, ale Google mówi mi, że rcov jest dobrym narzędziem do pokrycia kodu. Niestety, wszystkie informacje, które mogę znaleźć w Internecie, pokazują tylko, jak uzyskać informacje o zasięgu kodu dotyczące przypadków testowych - chcę informacji o zasięgu kodu samej witryny.Jak uzyskać statystyki zasięgu kodu dla mojej aplikacji Sinatra?

Poszczególne pliki miejscu chcę profilu są w „SDK” i „SDK/vendor” katalogów, więc gdzie bym normalnie uruchomić moją stronę z „Ruby site.rb” I zamiast próbowałem następujące:

rcov -Isdk -Isdk/vendor site.rb 

Pokazał tekst startowy Sinatry, ale natychmiast wyszedł, zamiast czekać, aż zwykłe aplikacje sieciowe, takie jak moja aplikacja Sinatra.

Czy ktoś może mi opowiedzieć o uruchomieniu mojej witryny z włączonym dostępem do kodu? Chcę uruchomić witrynę, trafić ją serią żądań, a następnie zatrzymać witrynę; po czym chcę spojrzeć na skumulowane statystyki zasięgu kodu z całej serii żądań.

Obecnie używam Ruby 1.8.7.

+0

mógłbyś rozwinąć trochę więcej, co rozumiesz jako „test pokrycia dla aplikacji”? ponieważ tradycyjnie oznacza to pokrycie przypadków testowych. – robustus

+0

Mam stronę internetową zaimplementowaną za pomocą Sinatry. Chciałbym korzystać z witryny i mierzyć, ile kodu witryny zostanie uruchomione podczas tego ćwiczenia. Nie używam żadnych ram testowych do automatyzacji korzystania z witryny. – Bruce

+0

Wygląda na to, że powinno to być proste, ale brakuje mi kluczowego wglądu. – Bruce

Odpowiedz

1

Może mógłbyś rzucić okiem na SimpleCov, która reklamuje jego proste użycie do każdego rodzaju analizy zasięgu.

+0

Wygląda ładnie, ale obecnie używam Ruby 1.8.7 i wygląda na to, że SimpleCov obsługuje tylko 1.9+. Zaktualizuję powyższy opis problemu z tymi informacjami. – Bruce

4

SimpleCov jest idealny do tego. Jeśli używasz RSpec i Bundler konfiguracja jest bardzo proste

w pliku gem

gem 'simplecov'

następnie

$ bundle install

W specyfikacji/spec_helper.rb (zanim cokolwiek innego)

require 'simplecov' 
SimpleCov.start 

następnie: $ rspec spec

Simplecov generuje naprawdę ładny raport pokrycia w pokryciu/index.html

+0

Nie używam rspec - jak wskazuję w moim pytaniu, chcę objąć kod na moich plikach witryny, a nie na testach. – Bruce

+0

Wystarczająco fair. Chyba źle zrozumiałem pytanie. Chcesz powiedzieć, że chcesz przetestować, które wiersze kodu są wykonywane przy określonym żądaniu lub zestawie żądań? Proponuję po prostu napisać kilka testów jednostkowych lub integracyjnych. W jakich okolicznościach może być przydatny raport o zasięgu inny niż dla zestawu testów? – jacobsimeon

+0

To prawda. Testuję kod po stronie serwera, który działa w dość skomplikowanym środowisku, z interakcjami między przeglądarką, serwerem Sinatra i innymi zdalnymi serwisami WWW.Jest całkiem prawdopodobne, że mogłem użyć jednej z testowych wiązek Ruby i wyśmiałem wszystkie fragmenty konfiguracji, które nie były bezpośrednio testowane, ale jestem nowy dla Ruby, więc uznałem, że prostsze i bezpieczniejsze jest po prostu wdrożenie złożonego systemu i następnie skorzystaj z przeglądarki. Po zrobieniu tego, teraz jestem ciekawy, jak dużo testowanego kodu Ruby jest trafiony. – Bruce

Powiązane problemy