【问题标题】:json files and called features not found in jenkins (with Karate Framework)json 文件和在 jenkins 中找不到的调用功能(使用空手道框架)
【发布时间】:2017-11-15 14:54:26
【问题描述】:

在我的功能中,我有: * def bar = read('classpath:features/xxx/foo.json')

但是当我在 Jenkins 中运行测试时,出现错误:

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

找到: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$重新编译$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) 在 cucumber.runtime.Utils$1.call(Utils.java:40) 在 cucumber.runtime.Timeout.timeout(Timeout.java:16) 在 cucumber.runtime.Utils.invoke(Utils.java:34) 在 cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38) 在 cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37) 在 com.intuit.karate.cucumber.CucumberUtils.runStep(CucumberUtils.java:136) 在 com.intuit.karate.cucumber.KarateRuntime.runStep(KarateRuntime.java:78) 在 cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44) 在 cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39) 在 cucumber.runtime.model.CucumberScenario.runBackground(CucumberScenario.java:59) 在 cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:42) 在 cucumber.runtime.model.CucumberScenarioOutline.run(CucumberScenarioOutline.java:46) 在 cucumber.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 karate


    【解决方案1】:

    如果我正确理解了您的问题(它严重缺乏细节),那么在您的本地机器上一切正常,但在 Jenkins 上运行时无法正常工作。

    你没有更多的堆栈跟踪要提供吗?

    可能有很多可能的原因。也许在 Jenkins 上,非 Java 文件未正确复制到 target/test-classes。检查 Jenkins 上的 pom.xml 是否表现不同,例如由于 Maven 配置文件。您应该与您的 Jenkins 管理员/CI 团队合作解决这个问题。

    【讨论】:

    • 请阅读有关目录结构的文档。还要检查功能是否正在通过 gradle 复制到 target/classestarget/test-classes。一切顺利。
    • 有什么方法可以将 'classpath:foo/bar/' 放在一个地方并从那个地方调用它?为了只有一个地方可以写入或更新目录名称,以避免错误。当您在多个功能中放置相同的目录名称时,出现大小写错误的风险很高。谢谢你的提示
    • 当然。只需将其作为karate-config.js 中的变量,然后在所有测试中使用它,您可以在read 中使用表达式,例如read(myPathPrefix + 'called.feature')
    • @nirind 你能详细说明一下,什么修复对你有用吗?确切的问题是什么?我也面临同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多