2012-07-27 17 views
6

Próbuję uruchomić JUnit test z JMeter 2.7. Jednak po wybraniu klas testowych w rozwijanym menu próbnika JUnit nie pojawiają się one. Jak się dowiedziałem, dzieje się tak dlatego, że klasy testowe rozciągają się od innej klasy (AbstractJUnit4SpringContextTests jest klasą bazową, z różnymi klasami abstrakcyjnymi pomiędzy metodami wygody) dla wszystkich testów. Można wybrać klasę testową, która nie jest rozszerzona z tych klas bazowych.JUnit nie wyświetla się w JMeter JMeter

Plik JAR zawierający klasy testowe jest tworzony przez Maven (test-jar), JAR zawierający wszystkie zależności jest tworzony przez wtyczkę maven fatjar. Oba słoiki są umieszczane w katalogu JMeter/lib/junit.

Wiem, że instrukcja JMeter mówi, że wszystkie klasy testowe muszą rozciągać się od klasy testowej JUnit, ale to wydaje się być prawdziwe tylko dla JUnit3. W przypadku JUnit4 JMeter nie potrzebuje tego wymagania. Oczywiście, mógłbym przepisać wszystkie testy, aby nie musiały się one rozciągać od klasy bazowej, ale spowodowałoby to ogromny problem z utrzymaniem. Jak więc wykonać testy JUnit za pomocą JMeter, które rozciągają się od klasy bazowej?

UDPATE 2012-08-09

Dzięki nutą PMD, teraz kopiowane Zależności jeden po drugim do folderu lib JMeter, a teraz GUI pokazuje wszystkie moje testy jednostkowe. Zanim to było możliwe, musiałem sam rozwiązać kilka problemów:

  • Skopiowanie pliku logkit-1.0.1.jar do folderu uniemożliwiło uruchomienie interfejsu graficznego JMeter. Nie wiadomo dlaczego, nie podano komunikatu o błędzie ani logu. Maszyna JVM właśnie się rozpoczęła i zakończyła.
  • Były niektóre konflikty wersji spowodowane przez zależności, które wprowadziły starsze wersje pakietów testowych. W wyniku tego niektóre klasy testowe rozciągnęły się od starszej klasy bazowej o tej samej nazwie. Wyłączenie tych zależności w pliku pom pomogło.

Mogę teraz wykonywać moje przypadki testowe JUnit. Jednak kilka odniesień na moich zajęciach opatrzone jest komentarzem @Resource. Testrunner JMeter nie wydaje się wstrzykiwać tych odniesień, ponieważ za każdym razem, gdy uzyskuje się dostęp do referencji, wyrzucany jest NullPointerException, jak widać w dzienniku JMeter. W jaki sposób mogę uzyskać JMeter do wstrzykiwania tych zależności, czy to możliwe?

+0

@ źródła są zwykle interpretowane wiosną podczas inicjowania kontekstu. W takim przypadku powinienem zbadać twój kod głębiej, może powinieneś spojrzeć na to, jak inicjuje się wiosenny test testowy lub możesz spróbować zastąpić metodę instalacji, aby wstrzyknąć ręcznie zasoby. Przy okazji, jeśli moja odpowiedź była prawidłowa, powinieneś oznaczyć ją jako "tak" i być może otworzyć inne pytanie zamiast zmieniać początkowe, tak działa SO. –

+0

@Teinacher czy znalazłeś rozwiązanie tego problemu? Mam to samo i nie wiem jak go rozwiązać – javagirl

Odpowiedz

4

Musisz umieścić swoje klasy junit w folderze lib/junit tak samo jak ty i zależności w folderze lib.

Nie powinieneś używać fatjara, ponieważ czasami te narzędzia usuwają pliki z meta-inf lub przechowują je tylko ze wszystkich słoików, w każdym z nich znajdują się słoiki.

Dodaj wszystkie swoje słoiki pojedynczo w folderze lib.

Sprawdź dzienniki jmetera, aby sprawdzić, czy masz wyjątek.

Jeśli nadal się nie powiedzie, zadaj pytanie na liście użytkowników jmetera, a jeśli nie otrzymasz żadnej odpowiedzi, stwórz prosty test i otwórz błąd.

1

Czy zaznaczyłeś opcję, że JUnit sampler musi szukać testów v4?

JMeter option to search for JUnit 4 annotations

próbowałem i to działa na prostym projekcie utworzonej z JUnit 4, filtruje tylko badań z @Test adnotacji nawet tych klas nie obejmuje klasy TestCase.

-1

Jak napisał Teinacher, test JUnit pojawi się w JMeter po skopiowaniu wszystkich zależności projektu (wszystkie pliki .jar) do katalogu JMeter/lib (wymagany jest restart JMeter).

+0

Kiedy odpowiedź jest akceptowana i poprawna, nie ma potrzeby dodawania duplikatu, który tylko myli nowych czytelników. –