2016-09-13 1 views
3

У меня здесь небольшая проблема: запустите этот проект, используя MAVEN и Cucumber.Запустите проект JAVA + Cucumber + JUnit Maven в командной строке

Я со следующей структурой в моей Maven проекта:

``` 
br.com.home.cucumberProjectWithWS 
       |--- src/tests/java 
       |        |--- com.home.Model (secret) 
       |        |--- com.home.Control (secret) 
       |        |--- com.home.View 
               |        |--- ... (secret) 
               |        |--- Runner.java 
       |        |--- com.home.javaStepsFolder 
       |                |--- MyTestsSteps.java 
       |--- src/main/java 
       |--- src/main/resources 
       |--- src/tests/resources 
       |--- featuresFolder 
       |        |--- FirstFeature.feature 
       |        |--- SecondFeature.feature 
       |        |--- ThirdFeature.feature 
       |--- pom.xml 
``` 

Runner.java класс является следующее:

``` 
package br.com.home.runner; 

import org.junit.runner.RunWith; 

import cucumber.api.CucumberOptions; 
import cucumber.api.junit.Cucumber; 

@RunWith(Cucumber.class) 
@CucumberOptions(monochrome = false, plugin = { "html:target/cucumber-html-report", "json:target/cucumber.json", 
           "pretty:target/cucumber-pretty.txt", "usage:target/cucumber-usage.json", 
           "junit:target/cucumber-results.xml" }, features = "featuresFolder", glue = { "br.com.home.javaStepsFolder" }) 
public class Runner { 

} 
``` 

Класс MyTestsSteps.java является чем-то вроде следующего:

``` 
package br.com.home.runner; 

import cucumber.api.*; 

class MyTestsSteps{ 

       Scenario scenario; 
       Controller controller = new Control(); 

       @Before 
       public void doItBefore(Scenario scenario){ 
           this.scenario = scenario; 
       } 

       @When("^we do something$") 
       public void doSomething(){ 
           controller.doSomething(); 
       } 

       @When("^we do something else$") 
       public void doSomethingElse(){ 
           controller.doSomethingElse(); 
       } 

       @Then("^we expect \"([^\"]*)$") 
       public void weExpectSomeResult(String result){ 
           assertTrue(controller.getResultExpected().equals(result)); 
       } 
} 
``` 

And my `pom.xml` is the following: 

``` 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
       <modelVersion>4.0.0</modelVersion> 
       <groupId>com.home.cucumberProjectWithWS</groupId> 
       <artifactId>com.home.cucumberProjectWithWS</artifactId> 
       <version>0.0.1-SNAPSHOT</version> 

       <dependencies> 
           <!-- CUCUMBER --> 

           <!-- CUCUMBER: Java --> 

           <dependency> 
               <groupId>info.cukes</groupId> 
               <artifactId>cucumber-java</artifactId> 
               <version>1.2.4</version> 
               <scope>test</scope> 
           </dependency> 

           <!-- CUCUMBER: Core --> 
           <dependency> 
               <groupId>info.cukes</groupId> 
               <artifactId>cucumber-core</artifactId> 
               <version>1.2.4</version> 
           </dependency> 

           <!-- CUCUMBER: JUnit --> 
           <dependency> 
               <groupId>info.cukes</groupId> 
               <artifactId>cucumber-junit</artifactId> 
               <version>1.2.4</version> 
               <scope>test</scope> 
           </dependency> 

           <!-- CUCUMBER: JVM Deps --> 
           <dependency> 
               <groupId>info.cukes</groupId> 
               <artifactId>cucumber-jvm-deps</artifactId> 
               <version>1.0.5</version> 
           </dependency> 

           <!-- CUCUMBER: Reports --> 
           <dependency> 
               <groupId>net.masterthought</groupId> 
               <artifactId>cucumber-reporting</artifactId> 
               <version>2.5.0</version> 
           </dependency> 

           <!-- CUCUMBER: Gherkin --> 
           <dependency> 
               <groupId>info.cukes</groupId> 
               <artifactId>gherkin</artifactId> 
               <version>2.12.2</version> 
           </dependency> 

           <!-- MOCKITO: All --> 
           <dependency> 
               <groupId>org.mockito</groupId> 
               <artifactId>mockito-all</artifactId> 
               <version>1.10.19</version> 
           </dependency> 

           <!-- JUNIT --> 
           <dependency> 
               <groupId>junit</groupId> 
               <artifactId>junit</artifactId> 
               <version>4.11</version> 
               <scope>test</scope> 
           </dependency> 
       </dependencies> 


       <build> 
           <sourceDirectory>src/main/java</sourceDirectory> 
           <plugins> 
               <plugin> 
                   <artifactId>maven-compiler-plugin</artifactId> 
                   <version>3.3</version> 
                   <configuration> 
                       <source>1.8</source> 
                       <target>1.8</target> 
                       <encoding>UTF-8</encoding> 
                   </configuration> 
               </plugin> 

               <plugin> 
                   <groupId>org.apache.maven.plugins</groupId> 
                   <artifactId>maven-surefire-plugin</artifactId> 
                   <version>2.19.1</version> 
                   <configuration> 
                       <properties> 
                           <property> 
                               <name>junit</name> 
                               <value>true</value> 
                           </property> 
                       </properties> 
                       <includes> 
                           <include>**/*Runner.java</include> 
                       </includes> 
                   </configuration> 
               </plugin> 

           </plugins> 
       </build> 

</project> 
``` 

Я пытаюсь запустить:

``` 
mvn clean test 
``` 

И не работает.

Я хочу запустить эти тесты с использованием Maven и узнать, возможно ли установить последовательность выполнения тестов на огурцы.

Я попытался определить параметр @CucumberOptions, но это не сработало!

``` 
features = "{featuresFolder/FirstFeature.feature, featuresFolder/SecondFeature.feature}" 
``` 

и

``` 
features = { 
       "featuresFolder/FirstFeature.feature", 
       "featuresFolder/SecondFeature.feature" 
} 
``` 

И пытается сделать (как это рекомендовано в другой пост здесь):

``` 
<includes> 
       <exclude>**/*Runner.java</exclude> 
</includes> 
``` 

в pom.xml конфигурации безошибочный-плагин.

Но это тоже не сработало.

Кто-то может помочь мне запустить этот проект с использованием командной строки MAVEN и Cucumber, если это возможно.

Я использую Windows 8.1! И проект будет запущен в Linux в будущем.

Спасибо.

+0

Вы пробовали устанавливать ваши полнометражных файлы внутри 'SRC/тесты/ресурсы/функции /', и обновить атрибут features в опциях огурца? –

+0

Вам нужно переименовать свой Runner.java в то, что заканчивается ключевым словом Test или имеет тест в нем или заканчивается TestCase. Только тогда плагин surefire автоматически выбирает это. В противном случае вам нужно будет добавить это в конфигурациях в pom.xml. – Grasshopper

+0

Уважаемый @JamesMcGuigan, спасибо за ваш ответ, во-первых. Но это не работает. Maven возвращает ошибку в аннотациях огурца. Например: 'не может найти символ. symbol: class Когда местоположение: br.com.home.javaStepsFolder'. – dsbonafe

ответ

2

Перейти на путь, по которому расположен ваш Pom.xml. Затем выполните команду ниже.

Команда запускает maven, тесты огурца из командной строки.

МВН чистый тест -Dcucumber.options = "SRC/ressouces/особенности --tags @@ Your_tag"

+0

спасибо @dsbonafe за принятие ответа. Надеюсь, что ваша проблема решена. – Priya

1

Я решил эту проблему. Я удаляю плагин surefire, обновляю свой проект и запускаю: После того, как я реструктурировал проект:

- Файл с функциями должен быть включен/src/resource/feature. - Файл Java должен быть включен/src/test/java и должен иметь имя Steps.java. $ mvn clean install $ mvn -Dtest=RunnerTest test

Благодарим за всех.