Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行JAVA+;黄瓜+;命令行中的JUnit Maven项目_Java_Maven_Junit_Cucumber - Fatal编程技术网

运行JAVA+;黄瓜+;命令行中的JUnit Maven项目

运行JAVA+;黄瓜+;命令行中的JUnit Maven项目,java,maven,junit,cucumber,Java,Maven,Junit,Cucumber,我这里有一个小问题:使用MAVEN和Cucumber运行这个项目 在我的MAVEN项目中,我采用以下结构: ``` br.com.home.cucumberProjectWithWS |--- src/tests/java | |--- com.home.Model (secret) | |

我这里有一个小问题:使用MAVEN和Cucumber运行这个项目

在我的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 {

}
```
```
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>
```
MyTestsSteps.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 {

}
```
```
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>
```
而且它不起作用

我想使用Maven运行这些测试,并知道是否可以设置Cucumber测试的执行顺序

我曾尝试在@CucumberOptions功能参数中定义,但没有成功

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

并尝试这样做(如其他帖子所建议的):

```
**/*Runner.java
```
pom.xml
surefire插件配置中

但它也不起作用

如果可能的话,有人可以帮助我使用MAVEN命令行和Cucumber来运行这个项目

我正在使用Windows 8.1! 该项目将来将在Linux上运行


谢谢。

以下是我如何在一个小项目中使用CucumberJVM的示例

我已经解决了这个问题。 我删除surefire插件,更新我的项目并运行: 在我重组项目后:

--功能文件应位于/src/resource/feature上。 --Java文件应位于/src/test/Java上,并应具有名称Steps.Java。

$mvn清洁安装
$mvn-Dtest=RunnerTest测试


谢谢大家。

转到Pom.xml所在的路径。然后执行下面的命令

命令从命令提示符运行maven、Cumber测试


mvn clean test-Dcucumber.options=“src/resources/features--tags@@@Your_tag”

在运行下面的命令后,对我也有效


mvn clean test-Dcucumber.options=“src/ressouces/features--tags@@@Your_tag”

您是否尝试将功能文件放置在“src/tests/resources/features/”中,并更新cumber选项中的features属性?您需要将Runner.java重命名为以test关键字结尾、包含test或以TestCase结尾的名称。只有这样,surefire插件才会自动选择此选项。否则,您需要在pom.xml中的配置中添加此项。亲爱的@JamesMcGuigan,首先感谢您的回答。但它不起作用。Maven在Cucumber注释中返回错误。例如:
找不到符号。symbol:class When location:br.com.home.javaStepsFolder
。亲爱的@Grasshopper,首先感谢您的回答。但它不太管用。:/我用
TestRunner.java
重命名了
Runner.java
,但它不起作用。@user2732966您可以尝试删除pom.xml中surefire插件的Runner排除模式并重试吗。它应该会自动恢复。在includes中,您在pom中加入了excludes模式。感谢@dsbonafe接受答案。希望你的问题得到解决。
```
<includes>
                <exclude>**/*Runner.java</exclude>
</includes>
```