Nano Hash - криптовалюты, майнинг, программирование

Как использовать Каратэ с инъекцией зависимостей (Picocontainer)

У меня есть проект, в котором я использую огурец, спокойствие, селен и Appium, я пытаюсь перенести тестирование API на Karate и не могу использовать его вместе с зависимостью picocontainer в pom.xml.

    org.picocontainer.injectors.AbstractInjector$UnsatisfiableDependenciesException: com.intuit.karate.ScriptEnv has unsatisfied dependency 'interface com.intuit.karate.cucumber.KarateReporter' for constructor 'public com.intuit.karate.ScriptEnv(java.lang.String,java.io.File,java.lang.String,java.lang.ClassLoader,com.intuit.karate.cucumber.KarateReporter)' from org.picocontainer.DefaultPicoContainer@66ac5762:11<|
at org.picocontainer.injectors.ConstructorInjector.getGreediestSatisfiableConstructor(ConstructorInjector.java:191)
  at org.picocontainer.injectors.ConstructorInjector.getGreediestSatisfiableConstructor(ConstructorInjector.java:110)
  at org.picocontainer.injectors.ConstructorInjector.access$100(ConstructorInjector.java:51)
  at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:331)
  at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
  at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)
  at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)
  at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)
  at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)
  at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699)
  at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647)
  at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:632)
  at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118)
  at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136)
  at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78)
  at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309)
  at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335)
  at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
  at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)
  at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)
  at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)
  at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)
  at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699)
  at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647)
  at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:678)
  at cucumber.runtime.java.picocontainer.PicoFactory.getInstance(PicoFactory.java:40)
  at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:38)
  at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)
  at cucumber.runtime.Runtime.runStep(Runtime.java:300)
  at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
  at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
  at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)
  at cucumber.runtime.model.CucumberFeature.run(CucumberFeature.java:165)
  at cucumber.runtime.Runtime.run(Runtime.java:122)
  at cucumber.api.cli.Main.run(Main.java:36)
  at cucumber.api.cli.Main.main(Main.java:18)

Как я могу добавить настройку карате с инъекцией зависимостей, например picocontainer.

07.03.2018

Ответы:


1

Cucumber DI не поддерживается Каратэ и фактически не требуется.

Потому что вы можете очень легко вызвать код Java и при необходимости использовать его повторно: https://github.com/intuit/karate#calling-java

Но вам рекомендуется делать все в каратэ, а затем в JS, насколько это возможно, чтобы вы получили максимальную пользу.

07.03.2018
  • Я вижу различные преимущества, включая повторное использование других файлов функций, и я не ищу usinr cucumber DI для файлов функций на основе карате. Существуют и другие файлы функций огурца, для которых требуется picocontainer, которые также находятся в том же проекте. Я просто надеялся сделать так, чтобы карате и другие мои файлы функций сосуществовали в одном рабочем пространстве. 07.03.2018
  • @AmitVyas, к сожалению, не поддерживается и вряд ли когда-либо будет поддерживаться. просто разделите эти проблемы или отбросьте все, что связано с пикоконтейнером 08.03.2018
  • Спасибо за помощь! 09.03.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..