2013-01-21 12 views
5

W moim -jvm ogórkiem, cechy Maven, JUnit Instalator Mam plik TestRunner jakogórek JVM CucumberException: Brak w []

package com.lebara.testrunner; 

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

@RunWith(Cucumber.class) 
@Cucumber.Options(

glue = {"com.lebara.stepdefs","com.lebara.framework.main", "com.lebara.testrunner"}, 
features = "C:/Users/sarthak.dayanand/Documents/WebRefreshTest/CukeAutomation/LebaraWebAutomationTest1/src/main/resources", 
format = {"pretty", "html:target/cucumber-html-report", "json-pretty:target/cucumber-report.json"}, 
tags = {"@UserJourney"} 

) 
public class RunCukesTest { 
} 

Mam plik cechą w wyżej wymienionym katalogu.

Gdybym go uruchomić, pojawia się następujący wyjątek:

cucumber.runtime.CucumberException: No features found at [C:/Users/sarthak.dayanand/Documents/WebRefreshTest/CukeAutomation/LebaraWebAutomationTest1/src/main/resources/cucumber]... 

Jeśli usunąć opcję „zawiera” w TestRunner, próbuje szukać plików fabularnych w tym samym katalogu co mój testrunner.java

cucumber.runtime.CucumberException: No features found at [com/lebara/testrunner] 

A jeśli umieści tam pliki z funkcjami, zadziała.

Moje pytanie brzmi, dlaczego mój plik cech nie jest odbierany z mojej poprzedniej lokalizacji, co uważałem za domyślną strukturę plików dla konfiguracji ogórka - mave.

Jak mogę to odebrać? Pomoc doceniona.

Odpowiedz

12

Gdzie dokładnie są twoje biegacze testowe i pliki funkcji? Mam następującą konfigurację, która działa perfekcyjnie:

src/test/ 
    java/ 
     com/mypackage/ 
      TestRunner.java 
      StepDefinition.java 
    resources 
     com/mypackage/ 
      fancy.feature 

Konwencje Maven/cuke będą miały testy wykonywane z testów katalogu/Java i pliki funkcji znajdujących się w katalogu testów/Resources. Moje testy biegacz jest w zasadzie takie same, ale z mniejszą ilością opcji:

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

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty"}) 
public class TestRunner { } 

Nadzieja to pomaga, jeśli nie już znalazł odpowiedź.

+1

zmianę z ".features" na”.feature "naprawiono to dla mnie; dzięki – ash

3

Mam układ podobny do twojego (nie używając konwencji Maven/Ogórek). W moich opcjach nie określam ścieżki z katalogu głównego, ale z folderu źródłowego projektu, w którym są przechowywane funkcje. Ma to sens, ponieważ w przeciwnym razie testy można by uruchomić tylko z poziomu komputera.

W twoim przypadku, myślę, że powinno być:

features = "src/main/resources" 
0

Jeśli zapewniając pełną ścieżkę do pliku funkcji tj

„C: /Users/sarthak.dayanand/Documents/WebRefreshTest/CukeAutomation/LebaraWebAutomationTest1/src/main/resources "jak w zapytaniu, spróbuj ponownie, zamieniając znak"/"na" \\ "(double back slash), jak poniżej.

"C: \\ Użytkowników \\ \\ Documents \\ sarthak.dayanand WebRefreshTest \\ CukeAutomation \\ LebaraWebAutomationTest1 \\ src \ główne \\ \\ abc.feature zasoby"

1

Wystarczy dodać funkcje = { "classpath: features/feature.feature"}, a funkcja musi być pod testem/resources/features/feature.feature.

@CucumberOptions(
     format = {"pretty", "html:target/html"}, 
     features = {"classpath:features/feature.feature"}, 
     snippets = SnippetType.CAMELCASE 

Uwaga classpath.

Podczas kompilacji kodu, jeśli używasz programu maven, otwórz target/test-classes/features, a zobaczysz funkcję .Funkcja

-2

Umieszczając plik fabularny pod src/test/java gdzie biegacz i kroki plik lub poprzez umieszczenie go pod src/main/java problem będzie rozwiązany.

zawsze mile widziane dla dzięki :)

+0

Nie umieszczaj kodu testowego pod ** src/main **. Ten folder zawiera zwykle kod, który przechodzi do produkcji i nie chcesz, aby kod testowy był produkowany. – neXus

0

zachować strukturę swojego projektu, jak poniżej, i to działa dobrze.

enter image description here