You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin下使用karate-junit-5运行提示no features or scenarios found问题问询

问题根因

你遇到的报错本质是Karate运行时在指定classpath路径下没有扫描到合法的.feature文件,核心原因是构建工具默认不会处理kotlin源代码目录下的非代码后缀文件:

org.opentest4j.AssertionFailedError: no features or scenarios found: [classpath:sncf/karate]

常规JVM项目(Maven/Gradle)的默认配置中,kotlin源码目录仅会编译.kt后缀的源码文件,.feature、.js等其余后缀文件会被直接忽略,不会拷贝到构建输出的classpath目录。哪怕你把ThreatController.feature和ThreatControllerIT.kt放在同一个源码目录,运行时classpath里只有编译后的.class文件,没有对应的feature文件,因此Karate扫描失败。
另外你当前放在kotlin目录下的karate-config.js也存在相同问题,后续会触发配置找不到的报错,需要同步处理。

解决方案

方案1:调整文件存放路径(最推荐,符合JVM项目规范)

将.feature文件和karate-config.js移到resources目录下的对应包路径,调整后目录结构如下:

kotlin
│   └── sncf
│      └── karate
│          └── ThreatControllerIT.kt
└── resources
    ├── karate-config.js
    └── sncf
        └── karate
            └── ThreatController.feature

构建工具会自动将resources目录下的所有文件原样拷贝到classpath根目录,Karate通过relativeTo(javaClass)就能匹配到对应路径下的feature文件。

方案2:修改构建配置,保留代码与feature同目录的结构

如果你希望把feature文件和测试代码放在同一个目录,可以修改构建工具的资源拷贝规则,将源码目录下的.feature文件纳入资源处理:

Gradle(Kotlin DSL配置)

sourceSets {
    test {
        resources {
            srcDir("src/test/kotlin")
            include("**/*.feature", "**/*.js")
        }
    }
    // 如果是单独的集成测试sourceSet,将test替换为对应sourceSet名称即可
}

Maven配置

<build>
    <testResources>
        <testResource>
            <directory>src/test/kotlin</directory>
            <includes>
                <include>**/*.feature</include>
                <include>**/*.js</include>
            </includes>
        </testResource>
        <testResource>
            <directory>src/test/resources</directory>
        </testResource>
    </testResources>
</build>
验证方法

修改完成后执行构建,查看构建输出目录(Gradle对应build/resources/test,Maven对应target/test-classes)下是否存在sncf/karate/ThreatController.feature文件,存在的话重新运行测试即可正常执行。如果仍有异常,可以尝试显式指定feature名称运行:

@Karate.Test
fun testThreat(): Karate {
    return Karate.run("ThreatController").relativeTo(javaClass)
}

内容的提问来源于stack exchange,提问作者Robin Leclerc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:48:03