【问题标题】:cucumber.runtime.cucumberException: Failed to instantiate class CucumberTestDefinition.CucumberStepDefinitioncucumber.runtime.cucumberException:无法实例化类 CucumberTestDefinition.CucumberStepDefinition
【发布时间】:2017-06-15 18:21:01
【问题描述】:

我已经处理过与此相关的所有以前的 StackOverflow 问题。这篇文章会很长,所以请多多包涵。我的黄瓜项目中的文件夹顺序如下:

-src/main/java

-src/main/resources

-src/test/java

      -|CucumberRunner (package)
                 -|CucumberTestRunner.java

      -|CucumberTestDefinition (package)

                 -|CucumberStepDefinition.java
-src/test/resources

-CucumberFeaturesFolder

        -|CucumberFeatureFile.feature

如果上述顺序对您没有意义,这里是项目文件夹排列的图片。 Order of project folders inside the project

我的 pom.xml 添加了以下依赖项(不再依赖):

<dependency>
   <groupId>org.seleniumhq.selenium</groupId>
   <artifactId>selenium-java</artifactId>
   <version>3.4.0</version>
</dependency> 
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>info.cukes</groupId>
  <artifactId>cucumber-java</artifactId>
  <version>1.2.2</version>
</dependency>
<dependency>
  <groupId>info.cukes</groupId>
  <artifactId>cucumber-junit</artifactId>
  <version>1.2.2</version>
  <scope>test</scope>
</dependency>

我的 CucumberTestRunner.java 文件包含以下内容:

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

@RunWith(Cucumber.class)
@CucumberOptions(
    features = "CucumberFeaturesFolder/CucumberFeatureFile.feature", 
    glue = {"src/test.java/CucumberTestDefinition"}
    )
public class CucumberTestRunner {}

我尝试运行 CucumberFeatureFile.feature 时遇到的错误如下:

cucumber.runtime.CucumberException: 无法实例化类 CucumberTestDefinition.CucumberStepDefinition

现在,在阅读了 StackOverflow 上提到的类似帖子后,我尝试将 cucumber-unit 和 cucumber-java 的版本从 1.2.2 更改为 1.2.0,这也导致了错误,但结果不同:

线程“main” cucumber.runtime.CucumberException 中的异常:未找到后端

【问题讨论】:

  • 将 CucumberFeaturesFolder 移动到 src\test\resources 中。 “功能”选项将变为“src/test/resources/CucumberFeaturesFolder/CucumberFeatureFile.feature”。 'glue' 选项是根据 java 包定义的 - “CucumberTestDefinition”。将 junit 和 cucumber 升级到最新版本。试一试...
  • @Grasshopper 感谢您的回复。我尝试了你的建议。我收到以下错误:线程“主”java.lang.IllegalArgumentException 中的异常:不是文件或目录:/Users/Saket/Documents/workspace/com.learnautomation.cucumber/CucumberFeaturesFolder/CucumberFeatureFile.feature
  • @Grasshopper 我也尝试将 cucumber 和 junit 升级到 1.2.5,没有帮助。

标签: java maven selenium-webdriver cucumber


【解决方案1】:

改变

glue = {"src/test.java/CucumberTestDefinition"}

glue = {"src/test/java/CucumberTestDefinition"}

【讨论】:

    【解决方案2】:

    确保 Java 版本与 POM.xml 中添加的黄瓜依赖项和其他依赖项兼容。早些时候我尝试过使用JDK 7,但是在更改为JDK 8后,错误/异常在运行时不再可见,并且能够成功执行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-21
      • 2020-04-26
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 2018-09-05
      相关资源
      最近更新 更多