Gradle环境下运行Karate+Gatling性能测试遇类加载失败求助
解决Gradle中Gatling无法加载Karate Simulation类的问题
直接修复:修正Simulation类的全限定名
你的Gradle任务中指定的类名performance2.userSimulation与实际Scala类完全不匹配:
- Scala类的包为
performance,而非performance2 - 类名是首字母大写的
UserSimulation,不是小写的userSimulation
修改gatlingRun任务的-s参数为正确的全限定类名:
task gatlingRun(type: JavaExec) { group = 'Web Tests' description = 'Run Gatling Tests' new File("${buildDir}/reports/gatling").mkdirs() classpath = sourceSets.test.runtimeClasspath main = "io.gatling.app.Gatling" args = [ '-s', 'performance.UserSimulation', // 修正此处的类名 '-rf', "${buildDir}/reports/gatling" ] systemProperties System.properties }
确保Scala代码被正确编译
Gradle的Scala插件默认编译src/test/scala目录下的代码,若你将Scala文件放在src/test/java,需调整sourceSets配置以包含该目录的scala源码:
sourceSets { test { scala { srcDirs = ['src/test/scala', 'src/test/java'] // 新增java目录作为scala源码路径 } resources { srcDir file('src/test/java') exclude '**/*.java' exclude '**/*.scala' } } }
统一依赖版本并补充Gatling核心依赖
当前配置中Karate版本混合了1.1.0和1.2.0,可能引发兼容性问题;同时缺少Gatling核心依赖,需补充并统一版本:
ext { karateVersion = '1.1.0' gatlingVersion = '3.9.5' // 选择兼容JDK8的Gatling版本 } dependencies { // ... 保留其他原有依赖 testImplementation("com.intuit.karate:karate-core:${karateVersion}") testImplementation("com.intuit.karate:karate-junit5:${karateVersion}") testImplementation("com.intuit.karate:karate-gatling:${karateVersion}") testImplementation("com.intuit.karate:karate-apache:${karateVersion}") // 统一Karate版本 testImplementation("io.gatling:gatling-core:${gatlingVersion}") testImplementation("io.gatling:gatling-app:${gatlingVersion}") testImplementation("io.gatling:gatling-http:${gatlingVersion}") }
验证步骤
- 先执行
gradle testClasses确保所有测试代码(包括Scala)完成编译 - 再执行
gradle gatlingRun运行性能测试
内容的提问来源于stack exchange,提问作者Chanda Sreenivasulu
相关产品推荐
相关产品推荐

