junit Cucumber 7.11.0找不到功能文件?

flvtvl50  于 2023-02-04  发布在  其他
关注(0)|答案(2)|浏览(170)

我尝试使用Cucumber 7.11.0来运行我的特性文件。但它似乎无法找到它们。我尝试使用maven-failsafe-plugin作为maven验证阶段的一部分运行
下面是我的测试运行程序类:

@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("features")
@ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty")
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "com.app.rs.api.cucumber")
public class TestRunner {}

我的项目结构:

| /src
| - /test
| -- /java
| --- /com/app/rs/api/cucumber
| ---- /stepdefinition
| ----- StepDef.java
| ---- TestRunner.java
| -- /resources
| --- /features
| ---- test.feature

当我尝试运行我的TestRunner时,我收到以下错误消息

Internal Error occurred.
org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-platform-suite' failed to discover tests

我的pom.xml:

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>7.11.0</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit-platform-engine</artifactId>
    <version>7.11.0</version>
    <scope>test</scope>
</dependency>

<dependency>
   <groupId>org.junit.jupiter</groupId>
   <artifactId>junit-jupiter</artifactId>
   <version>5.9.2</version>
   <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-suite</artifactId>
    <version>1.9.2</version>
    <scope>test</scope>
</dependency>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>3.0.0-M8</version>
    <configuration>
        <forkCount>0</forkCount>
        <useSystemClassLoader>false</useSystemClassLoader>
        <skip>${release}</skip>
    </configuration>
    <executions>
       <execution>
          <goals>
             <goal>integration-test</goal>
              <goal>verify</goal>
          </goals>
       </execution>
    </executions>
</plugin>
ha5z0ras

ha5z0ras1#

可以尝试指定路径,如下所示:

  • features=“src/test/resources”* in @SelectClasspathResource(“features”),如果可能的话,因为在Cucumber的旧版本中,我们必须像这样使用它:@CucumberOptions(features=“src/test/resources”),所以新版本可能需要类似于此的smth
zdwk9cvp

zdwk9cvp2#

通过使用@SelectClasspathResource("features"),您将指示JUnit通知Cucumber测试引擎在类路径的features包中查找测试。
但是你的项目没有遵循Maven Standard Directory Layout。当遵循这个结构时,你的类应该在scr/test/java下。
这意味着:
1.您已经对Maven进行了不同的配置,并更改了配置,以使src/test/resources不会复制到target/test-classes
1.您没有使用Maven而是使用IDE来运行测试。如果是这样,您的IDE配置不正确,并且没有使用src/test/resources作为类路径根。
您可以通过指示JUnit告诉Cucumber在其他位置查找测试来解决这个问题,您可以在org.junit.platform.suite.api包中找到所有选项,您可以尝试@SelectDirectories("src/test/resources")
尽管你可能需要修正你的项目结构,你可以用cucumber-java-skeleton作为一个例子。

相关问题