Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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 运行maven测试时未执行Cumber测试_Java_Maven_Cucumber_Pom.xml - Fatal编程技术网

Java 运行maven测试时未执行Cumber测试

Java 运行maven测试时未执行Cumber测试,java,maven,cucumber,pom.xml,Java,Maven,Cucumber,Pom.xml,我有一个黄瓜项目。当我右键单击RunnerTest类并“运行”RunnerTest时,功能文件中的所有功能都开始运行。所有测试都通过 我的RunnerTest.class import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; import java.sql.SQLException; import lombok.extern.log4j.Log4j2; import org.junit.Before

我有一个黄瓜项目。当我右键单击RunnerTest类并“运行”RunnerTest时,功能文件中的所有功能都开始运行。所有测试都通过

我的RunnerTest.class

   import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import java.sql.SQLException;
import lombok.extern.log4j.Log4j2;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
features = {"classpath:foo.feature"},
glue = "com.foo.foobar.StepDefinitions",
plugin = {"json:target/cucumber-report/cucumber.json"},
monochrome = true,
strict = true
//,dryRun = true
)

@Log4j2
public class RunnerTest {}
但当我尝试运行mvn测试或mvn清洁安装功能时,这些功能并没有运行。 这是输出


T T S T S 运行测试套件 使用org.apache.maven.surefire.TestNG.conf配置TestNG。TestNG652Configurator@515f550a 测试运行:0,失败:0,错误:0,跳过:0,所用时间:0.895秒

结果:

测试运行:0,失败:0,错误:0,跳过:0

这些是我的POM依赖项

<dependency>
  <groupId>io.cucumber</groupId>
  <artifactId>cucumber-junit</artifactId>
  <version>3.0.0</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>io.cucumber</groupId>
  <artifactId>cucumber-core</artifactId>
  <version>3.0.0</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>io.cucumber</groupId>
  <artifactId>cucumber-java</artifactId>
  <version>3.0.0</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>io.cucumber</groupId>
  <artifactId>cucumber-jvm</artifactId>
  <version>3.0.0</version>
  <type>pom</type>
</dependency>
<dependency>
  <groupId>io.cucumber</groupId>
  <artifactId>cucumber-jvm-deps</artifactId>
  <version>1.0.6</version>
</dependency>
<dependency>
  <groupId>io.cucumber</groupId>
  <artifactId>gherkin</artifactId>
  <version>4.1.3</version>
</dependency>
<!--<dependency>-->
  <!--<groupId>junit</groupId>-->
  <!--<artifactId>junit</artifactId>-->
  <!--<version>4.12</version>-->
<!--</dependency>-->
<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.14.3</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.6</version>
  <scope>test</scope>
</dependency>

黄瓜
黄瓜刺柏
3.0.0
测试
黄瓜
黄瓜核
3.0.0
测试
黄瓜
黄瓜爪哇
3.0.0
测试
黄瓜
黄瓜
3.0.0
聚甲醛
黄瓜
黄瓜汁
1.0.6
黄瓜
小黄瓜
4.1.3
org.testng
testng
6.14.3
测试
org.projectlombok
龙目
1.18.6
测试
我尝试添加mvn surefire插件,并在其中包含我的RunnerTest类

<build>
 <pluginManagement>
  <plugins>
   <plugin>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>2.12.4</version>
     <configuration>
       <includes>
       <include>RunnerTest.java</include>
       </includes>
     </configuration>
   </plugin>
  </plugins>
 </pluginManagement>
</build>

maven surefire插件
2.12.4
RunnerTest.java

但这也不起作用。

已知问题:如果保持Junit和TestNG两个依赖项并行,那么TestNG依赖项会导致Surefire忽略Junit包装类

解决方案:可能有多种处理方法,比如我们可以定义2个执行,每个用于TestNG和JUnit,并根据需要禁用一个

你能试试这个吗:请删除任何直接/间接的TestNG依赖项

org.testng testng 6.14.3 测试

并尝试在下面添加一个-

黄瓜 黄瓜试验 3.0.0

此外,我还建议您做一件事保持pom.xml的整洁

要点:

  • 我们不应该混合使用直接依赖和传递依赖,特别是它们的版本!这样做可能会导致不可预测的结果
通过JUnit执行黄瓜 您应该删除cucumber core、cucumber java、cucumber jvm、cucumber jvm dep和gherkin,因为这些是可传递的依赖项,当您添加下面的直接(主要)依赖项时,Maven会添加这些依赖项。只需添加下面的2和上面共享的testng的1

 <dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>3.0.0</version>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>3.0.0</version>
</dependency>

黄瓜
黄瓜刺柏
3.0.0
黄瓜
黄瓜皮容器
3.0.0

您的类正在导入JUnit注释(
@RunWith
)而您的Maven输出表示它正在尝试使用TestNG@JeroenSteenbeeke谢谢。你能告诉我如何克服这个问题吗?我也需要我的TestNG依赖性,因为我使用的是TestNG断言。我对Cucumber的经验有限,对TestNG没有经验,所以我能做的最好是询问Google。我发现的建议你应该删除
@RunWith
注释,并让测试类扩展
AbstractTestNGCucumberTests
(源代码:)@JeroenSteenbeeke啊,谢谢。但我的期望是用Junit而不是TestNG来运行它。就目前而言,我对TestNG依赖项进行了评论,并尝试再次运行。maven仍然试图使用TestNG来执行。不知道为什么。我也在谷歌上搜索。谢谢你的建议。谢谢你的建议。我删除了所有其他依赖项你问。但当我运行它时,它又在运行TestNG。所以我也删除了Cumber TestNG依赖项。然后它开始选择Junit包装Sclass。我想我根本无法保留任何TestNG依赖项。