json файлы и вызываемые функции, которых нет в jenkins (с Karate Framework)


В моей функции есть: * 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

Что случилось?

`

Если я правильно понимаю ваш вопрос (в нем очень не хватает деталей), все работает нормально на вашем локальном компьютере, но не работает при запуске на Jenkins.


person cygne    schedule 15.11.2017    source источник


Ответы (1)


Разве вам не нужно предоставить еще немного трассировки стека?

Причин могло быть очень много. Возможно, в Jenkins файлы, отличные от Java, неправильно копируются в target/test-classes. Проверьте, не ведет ли pom.xml на Jenkins по-другому, например, из-за профиля Maven. Чтобы решить эту проблему, вам следует поработать со своей командой администраторов Jenkins / CI.

пожалуйста, прочтите документ о структуре каталогов. также проверьте, копируются ли функции в target/test-classes или pom.xml с помощью градиента. все самое лучшее.

person Peter Thomas    schedule 15.11.2017
comment
Позвольте нам продолжить это обсуждение в чате. - person Peter Thomas; 16.11.2017
comment
есть ли способ поместить classpath: foo / bar / в одно место и вызвать его из этого места? чтобы было только одно место для записи или обновления имен каталогов, чтобы избежать ошибок. Когда вы помещаете одинаковые имена каталогов в несколько функций, высок риск ошибиться с регистром. Спасибо за советы - person cygne; 17.11.2017
comment
конечно. просто сделайте это переменной в _1_, а затем используйте ее во всех своих тестах, вы можете использовать выражения в _2_, например, _3_ - person cygne; 20.11.2017
comment
@nirind Не могли бы вы уточнить, какие исправления у вас сработали? В чем была точная проблема? Я тоже сталкиваюсь с тем же. - person Peter Thomas; 20.11.2017
comment
@PeterThomas Можете ли вы помочь мне найти исправление, которое сработало в этом случае? У меня возникла точная проблема при запуске тестовых примеров в Jenkin. Ниринд здесь не особо активен. Я проверил директорию папки target / test-classes, файлы там есть. Я также изменил регистр файлов на строчные, но это тоже не сработало. - person QualityMatters; 11.03.2019
comment
@deepakmathpal, что вы предлагаете мне сделать :) Единственное, что я могу предложить дополнительно, это следовать этому процессу: github.com/intuit/karate/wiki/How-to-Submit-an-Issue - person QualityMatters; 12.03.2019
comment
@deepakmathpal проверьте все заглавные и крошечные буквы в именах файлов или любые другие ссылки, которые вы вызываете от jenkins. Это случай разумный. пример: в вашем runner ›проверяйте кейсы в именах функций, путях. У Дженкинса и твоего бегуна должно быть точно так же. - person Peter Thomas; 12.03.2019
comment
@nirind это мой путь в файле функций: read ('classpath: apiTest / testData / graphqlflattensmoke.graphql'). Имя файла (graphqlflattensmoke) я уже изменил на нижний регистр как в расположении, так и в функциях, а также в папках. - person cygne; 12.03.2019
comment
@deepakmathpal вы проверили свой бегун: @CucumberOptions (features = {classpath: features / xxxx /}) - person QualityMatters; 12.03.2019
comment
найдено: 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:11 в 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.scriptin g.NashornScriptEngine.evalImpl (NashornScriptEngine.java:449) на jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl (NashornScriptEngine.java:406) на jdk.nashorn.api.scripting.NashornScriptEngine.java:449. на 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 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAcces sorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в cucumber.runtime.Utils (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.cumber:44) в .model.StepContainer.runSteps (StepContainer.java:39) в cucumber.runtime.model.CucumberScenario.runBackground (CucumberScenario.java:59) в cucumber.runtime.model.CucumberScenario.run (CucumberScenario.java:42. runtime.model.CucumberScenarioOutline.run (CucumberScenarioOutline.java:46) в cucumber.runtime.model.CucumberFeature.run (CucumberFeature.java:165) в com.intuit.karate.cucumber.CucumberRunner.lambdajava $ parallel $ 0 : 84) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в $ java.util.concurrent.ThreadPool ( ThreadPoolExecutor.java:624) на java.lang .Thread.run (Thread.java:748) - person cygne; 12.03.2019