• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

System uruchamia testy z Cucumbera a ignoruje z RunTestu

VPS Starter Arubacloud
+1 głos
136 wizyt
pytanie zadane 29 maja 2022 w Java przez blofeld Użytkownik (700 p.)

Hej.

Tak jak napisałem wyżej.

Napisałem projekt testowy, który niby bez problemu działa.

Niby, bo działa przez Cucumbera, jeśli jednak uruchamiam go przez clasę TestRun, wtedy ten pokazuje nulla informując że nie załadowałem propertisów. Nie jest to prawdą albowiem ładowanie tych wrzucam w Cucumberowym @Before. Próbowałem również kombinować z BaseTestem po którym dziedziczy klasa TestRun. Też nie idzie. Sama klasa TestRun ma oczywiście odpowiednie adnotacje tj

@RunWith(Cucumber.class)
@CucumberOptions(monochrome = true, features = {"src/test/java/features"},
        glue = {"stepDefinitions"},
        plugin = {"pretty","json:target/MyReports/report.json"})
public class TestRun {}

Podsumowując, po odpaleniu z Ogórka widzę:

" 5 Scenarios (5 passed)
15 Steps (15 passed)
0m10,864s"

A po odpaleniu z klasy TestRun:

java.lang.IllegalArgumentException: parameterValue cannot be null

Pokazuje to, że system nie widzi wtedy załadowanych propertisów. Te jednak w zasadzie są łądowane prawidłowo, inaczej Cucumber by nie działał :-)

Ma ktoś pomysł co może być tego przyczyną ?

1 odpowiedź

+1 głos
odpowiedź 29 maja 2022 przez Wiciorny Ekspert (269,120 p.)

Zacznijmy od początku, upewnij się czy w klasie są odpowiednie import i RunWith pochodzi z odpowiedniego JUnit
 

import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

Dodatkowo sprawdź, jaka wersja jest CUCUMBERA w zależnościach i jaka wersja JUnit i czy testy są uruchamiane na JDK 8 czy nie może na innej niż projekt lub 11/15
Sprawdź zależności,

<cucumber.version>1.2.2</cucumber.version>
  <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>${cucumber.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>${cucumber.version}</version>
        <scope>test</scope>
    </dependency>

Nie każda wersja ogórka wspiera niektóre z twoich parametrów czy jest kompatybilna z twoja wersją JUnit- uwaga szczególnie na Junita >v.5
Wyślij mi całe logi z stacktrace, bo wtedy zdecydowaniej bedzie mi prościej stwierdzić czy problem leży w pakietach czy nie przypadkiem ścieżce/konfiguracji 

komentarz 29 maja 2022 przez blofeld Użytkownik (700 p.)

Hej.

Mój Pom.

Dla czytelności przedstawiam samego jUnita i cucumbera.

Propertisy ładuję z hooka z adnotacją cucumbera Before - z pliku Yaml.

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.version}</version>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>${junit.version}</version>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.version}</version>
    </dependency>
    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>${junit.version}</version>
    </dependency>
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>${cucumber.version}</version>
</dependency>
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-core</artifactId>
    <version>${cucumber.version}</version>
</dependency>
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>${cucumber.version}</version>
</dependency>
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-gherkin-vintage</artifactId>
    <version>${cucumber.version}</version>
</dependency>

 

komentarz 29 maja 2022 przez blofeld Użytkownik (700 p.)

Zapomniałbym 

<junit.version>5.7.2</junit.version>
<cucumber.version>5.5.0</cucumber.version>
komentarz 29 maja 2022 przez Wiciorny Ekspert (269,120 p.)

dodaj feature do resource i spróbuj na classpath, ewentualnie
 

  features = {"classpath:features/nazwa_scenariuszy.feature"},

z odpowiednim rozszerzeniem *.feature, albo dodaj do swojej ściezki konkretny plik scneariuszy, generalnie spróbuj skorzystać z JUNIT 4, albo sprawdź czy wskazanie pliku i odpowiednie jego konfiguracje w IDE są zgodne : 
Jeśli korzystasz z Intelki to masz : 
https://www.jetbrains.com/help/idea/running-cucumber-tests.html#cucumber-new-run-config
istotne jest to zeby docelowy plik się zgadzał.
Druga sprawa, czy twoje scenariusze nie wymagaja jakis argumentów danych ładowanych z testów? 

1
komentarz 29 maja 2022 przez blofeld Użytkownik (700 p.)

Dopisanie .feature nic nie zmienia.

Wymagają i bez problemu z nich korzystają ale kiedy korzystam z Cucumbera. 

Kiedy walczę z odpalenia z klasy wtedy mam powyższy komunikat.

Spróbowałem zrobić to samo ale pobierając dane z JSON'a i jest ciekawiej.

Dane się niby ładują, przy Yamlu w ogóle się nie ładowały, ale testy - przyuruchamianiu z klasy testowej się wyrzucają z informacją

-  java.net.ConnectException: Connection refused: connect

Jest coś nie tegez przy uruchamianiu i czytaniu z klasy uruchomieniowej. I tego nie potrafię pokonać :-)

1
komentarz 30 maja 2022 przez blofeld Użytkownik (700 p.)
Dobra, poszło :-)

Problem był w statyczności baseUrl'a. Kiedy usunąłem RestAssured.BasedUrl z Hook'ów a wrzuciłem w RequestSecification wtedy zaczęło działać poprawnie. Choć i tak to trochę dziwne, ten sam kod, tu idzie a tu nie :-)

Podobne pytania

0 głosów
0 odpowiedzi 244 wizyt
pytanie zadane 22 sierpnia 2021 w Java przez Bartek030 Obywatel (1,460 p.)
0 głosów
1 odpowiedź 357 wizyt
pytanie zadane 4 maja 2021 w Java przez janyczek Początkujący (360 p.)
0 głosów
1 odpowiedź 248 wizyt
pytanie zadane 12 czerwca 2020 w Java przez Leonardo Użytkownik (770 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...