jenkins 中找不到的 json 文件和调用的功能(使用空手道框架) [英] json files and called features not found in jenkins (with Karate Framework)
问题描述
在我的功能中,我有:* def bar = read('classpath:features/xxx/foo.json')
但是当我在 Jenkins 中运行测试时,出现错误:
<块引用>java.lang.RuntimeException: javascript 评估失败:read('classpath:features/xxx/foo.json')在 com.intuit.karate.Script.evalInNashorn(Script.java:423)在 com.intuit.karate.Script.evalInNashorn(Script.java:394)在 com.intuit.karate.Script.eval(Script.java:316)在 com.intuit.karate.Script.eval(Script.java:194)在 com.intuit.karate.Script.assign(Script.java:656)在 com.intuit.karate.Script.assign(Script.java:587)在 com.intuit.karate.StepDefs.def(StepDefs.java:265)在✽.* def u = read('classpath:features/xxx/foo.json')(features/XXX/calling.feature:7)引起:com.intuit.karate.exception.KarateFileNotFoundException:文件不是
找到:features/xxx/foo.json,类路径:true在 com.intuit.karate.FileUtils.readFileAsString(FileUtils.java:104)在 com.intuit.karate.FileUtils.readFile(FileUtils.java:80)在 jdk.nashorn.internal.scripts.Script$Recompilation$8$15A$^eval_.L:1(:3)在 jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:639)在 jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)在 jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)在 jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:117)在 jdk.nashorn.internal.scripts.Script$19$^eval_.:program(:1)在 jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)在 jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)在 jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)在 jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:449)在 jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)在 jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402)在 jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155)在 javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)在 com.intuit.karate.Script.evalInNashorn(Script.java:419)在 com.intuit.karate.Script.evalInNashorn(Script.java:394)在 com.intuit.karate.Script.eval(Script.java:316)在 com.intuit.karate.Script.eval(Script.java:194)在 com.intuit.karate.Script.assign(Script.java:656)在 com.intuit.karate.Script.assign(Script.java:587)在 com.intuit.karate.StepDefs.def(StepDefs.java:265)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在 java.lang.reflect.Method.invoke(Method.java:498)在黄瓜.runtime.Utils$1.call(Utils.java:40)在黄瓜.runtime.Timeout.timeout(Timeout.java:16)在黄瓜.runtime.Utils.invoke(Utils.java:34)在cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)在黄瓜.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)在 com.intuit.karate.cucumber.CucumberUtils.runStep(CucumberUtils.java:136)在 com.intuit.karate.cucumber.KarateRuntime.runStep(KarateRuntime.java:78)在黄瓜.runtime.model.StepContainer.runStep(StepContainer.java:44)在黄瓜.runtime.model.StepContainer.runSteps(StepContainer.java:39)在黄瓜.runtime.model.CucumberScenario.runBackground(CucumberScenario.java:59)在黄瓜.runtime.model.CucumberScenario.run(CucumberScenario.java:42)在cucumber.runtime.model.CucumberScenarioOutline.run(CucumberScenarioOutline.java:46)在黄瓜.runtime.model.CucumberFeature.run(CucumberFeature.java:165)在 com.intuit.karate.cucumber.CucumberRunner.lambda$parallel$0(CucumberRunner.java:84)在 java.util.concurrent.FutureTask.run(FutureTask.java:266)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)在 java.lang.Thread.run(Thread.java:748)
`
怎么了?
如果我正确理解您的问题(它严重缺乏细节),那么在您的本地机器上一切正常,但在 Jenkins 上运行时无法正常工作.
难道您没有更多的堆栈跟踪要提供吗?
可能有很多可能的原因.也许在 Jenkins 上,非 Java 文件没有正确复制到 target/test-classes
.检查 Jenkins 上的 pom.xml
是否没有因为 Maven 配置文件而表现不同.您应该与您的 Jenkins 管理员/CI 团队合作来解决这个问题.
In my feature I have:
* def bar = read('classpath:features/xxx/foo.json')
But when I run tests in Jenkins, I have an error:
java.lang.RuntimeException: javascript evaluation failed: read('classpath:features/xxx/foo.json') at com.intuit.karate.Script.evalInNashorn(Script.java:423) at com.intuit.karate.Script.evalInNashorn(Script.java:394) at com.intuit.karate.Script.eval(Script.java:316) at com.intuit.karate.Script.eval(Script.java:194) at com.intuit.karate.Script.assign(Script.java:656) at com.intuit.karate.Script.assign(Script.java:587) at com.intuit.karate.StepDefs.def(StepDefs.java:265) at ✽.* def u = read('classpath:features/xxx/foo.json')(features/XXX/calling.feature:7) Caused by: com.intuit.karate.exception.KarateFileNotFoundException: file not
found: features/xxx/foo.json, classpath: true at com.intuit.karate.FileUtils.readFileAsString(FileUtils.java:104) at com.intuit.karate.FileUtils.readFile(FileUtils.java:80) at jdk.nashorn.internal.scripts.Script$Recompilation$8$15A$^eval_.L:1(:3) at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:639) at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494) at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393) at jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:117) at jdk.nashorn.internal.scripts.Script$19$^eval_.:program(:1) at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637) at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494) at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393) at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:449) at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406) at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402) at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155) at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264) at com.intuit.karate.Script.evalInNashorn(Script.java:419) at com.intuit.karate.Script.evalInNashorn(Script.java:394) at com.intuit.karate.Script.eval(Script.java:316) at com.intuit.karate.Script.eval(Script.java:194) at com.intuit.karate.Script.assign(Script.java:656) at com.intuit.karate.Script.assign(Script.java:587) at com.intuit.karate.StepDefs.def(StepDefs.java:265) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at cucumber.runtime.Utils$1.call(Utils.java:40) at cucumber.runtime.Timeout.timeout(Timeout.java:16) at cucumber.runtime.Utils.invoke(Utils.java:34) at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38) at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37) at com.intuit.karate.cucumber.CucumberUtils.runStep(CucumberUtils.java:136) at com.intuit.karate.cucumber.KarateRuntime.runStep(KarateRuntime.java:78) at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44) at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39) at cucumber.runtime.model.CucumberScenario.runBackground(CucumberScenario.java:59) at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:42) at cucumber.runtime.model.CucumberScenarioOutline.run(CucumberScenarioOutline.java:46) at cucumber.runtime.model.CucumberFeature.run(CucumberFeature.java:165) at com.intuit.karate.cucumber.CucumberRunner.lambda$parallel$0(CucumberRunner.java:84) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
`
What is wrong?
If I understand your question correctly (it severely lacks details), everything works fine on your local machine, but does not work when running on Jenkins.
Don't you have a little bit more stack trace to provide ?
There could be so many possible reasons. Maybe on Jenkins, non-Java files are not being copied correctly to target/test-classes
. Check whether the pom.xml
on Jenkins is not behaving differently for example because of a Maven profile. You should work with your Jenkins admin / CI team to solve this.
这篇关于jenkins 中找不到的 json 文件和调用的功能(使用空手道框架)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!