问题标签 [picocontainer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
86 浏览

dependency-injection - Cucumber BDD 在不同类之间共享变量

我有步骤定义,比如说 ClassA 和 ClassB,在 ClassB 中我想使用 ClassA 中定义的变量。

我如何才能做到这一点,我相信引入任何静态都不是一个好方法。

我意识到 ClassB 应该有一个依赖 ClassA 作为构造函数注入 Class A 应该作为参数传递给 ClassB 但是如何注入具有定义值的“环境”字段?

非常感谢任何提示

0 投票
0 回答
208 浏览

java - Java / PicoContainer / IoC 容器 - 注入和解决“作用域”依赖关系(维护对象/引用平等)

我来自 .NET 领域,最近正在做一些 Java 项目(将 .NET 代码库的一部分转换为 Java)。通常我使用 .NET 和 Castle Windsor 作为我选择的 IoC 容器并且我非常熟悉它。我正在将 PicoContainer IoC 容器用于 Java 项目,并且正在尝试弄清楚如何将作用域依赖项注入到容器中。通过“范围依赖”,我的意思是一个依赖,只要容器的“范围”是开放的,每次从容器中解析依赖时,结果都是完全相同的对象。

在 .NET 领域,使用诸如 Castle Windsor 之类的 IoC 容器,注册具有特定生命周期(Singleton、Transient、Scoped 等)的组件是微不足道的。例如,以下 C# 可以按预期完美运行。

// C#代码 //

然而,在 Java 领域,使用像 PicoContainer 这样的 IoC 容器,似乎没有办法实现这种我觉得很奇怪的行为。

// JAVA代码 //

我确信它必须具有这样的功能,因为我无法想象有人使用 IoC 容器并希望每个依赖项都是瞬态的或仅是单例的。

现在,在发布这个问题之前,我确实彻底查阅了以下链接中的文档以及谷歌的解决方案,但似乎没有任何帮助:

http://picocontainer.com/lifecycle.html http://picocontainer.com/javadoc/core/org/picocontainer/DefaultPicoContainer.html http://picocontainer.com/javadoc/core/org/picocontainer/lifecycle/DefaultLifecycleState。 html

似乎没有这样的生活方式(或相关的 API)选项来允许 PicoContainer 中的范围依赖。我能想到的一些解决问题的想法是一个临时容器(或主容器的子容器),它包含像作用域依赖项一样的“临时单例”,一旦调用代码完成子容器,它将调用某种在持有“临时单身人士”的子容器上使用“处置”方法并将它们全部清除。然而,据我所知,这似乎不优雅而且相当“hacky”。

另一个解决方案可能存在于 PicoContainer 的“启动”和“停止”API 中,但这些对我来说没有意义,因为我不理解 IoC 容器“启动”和“停止”的概念,而只是“现有” (或不)。此外,文档还不清楚各种依赖项是否需要实现此类方法/API。这种用例似乎……不直观?或者更确切地说,就像我们鼓励将抽象/NFC 耦合和泄漏到依赖项中一样。我怀疑这就是那些 API 的用途,所以我可能在这里走错了路。

PS 我不同意使用 PicoContainer 作为该项目选择的 IoC 容器的想法。如果它们可以实现 IoC 容器功能,我愿意接受其他选择。我对“Guice”做了一些简单的初步调查,但它似乎不是传统 IoC 容器意义上的“容器”,而是一个具有有限注入器的库,并且完全依赖于依赖解析的注释。我正在寻找更接近传统 IoC 容器(例如 Castle Windsor)所期望的东西。

感谢您的任何见解或帮助!

0 投票
0 回答
287 浏览

java - 爪哇马文;org.picocontainer.injectors.AbstractInjector$CyclicDependencyException:循环依赖

目前看到下面列出的异常:

我已经检查了与问题相关的推荐区域(类),但找不到任何重复注入的类等:循环依赖:

有任何想法吗?

0 投票
1 回答
724 浏览

java - 可以在没有构造函数参数的情况下使用 PicoContainer(依赖注入)吗?

我需要在不传递构造函数参数的情况下使用 PicoContainer 实现依赖注入,当前设置:

在上面的例子中,我需要使用 PicoContainer 实现 DI,而不需要传递:Account_Pojo account_pojo 作为构造函数的参数,这甚至可能吗?

我试过以下没有运气:

0 投票
1 回答
217 浏览

java - 如何有效地使用 PicoContainer Setter Injection(使用 PicoContainer 而不向构造函数传递参数)?

如何有效地使用 PicoContainer Setter 注入?

我需要能够跨 Cucumber 步骤传递数据,并且希望避免将参数传递给构造函数的传统 PicoContainer 方法(使用 PicoContainer 而不采取通过构造函数将类注入其他类的方法)。

到目前为止,我有以下设置但没有运气,有什么想法吗?

我的步骤类:

Pojo 设置:

正如您从上面的代码中看到的那样,位于第二步中的以下代码行应该返回 joe 但是它似乎返回了一个空值:

0 投票
1 回答
1320 浏览

java - Cucumber, Java Picocontainer / Constructor injection: TestContext & ScenarioContext), 如何在多个步骤定义之间共享多个数据

问题:如何使用构造注入、依赖注入/Picocontainer 在多个步骤定义之间共享多个变量/数据以及状态(如果需要)。

背景:我们有一个非常大的步骤定义,并且越来越难以管理。因此,我们决定使用这个新的自动化基础将步骤定义拆分为多个小定义。

堆栈:Selenium、Java、Cucumber、Junit、Picocontainer。

为了实现上述目的,我们在各种网站和stackoverflow讨论中寻找了很多建议,有很多建议,比如使用依赖注入(Picocontainer),使用构造函数注入,spring等。

在浏览了所有这些建议和页面之后,我们发现了一些灰色区域(在上面的问题中提到)在 stackoverflow 的一个位置/一个答案/一个页面的任何地方都没有得到回答,所以我分享这个例子以获得更多信息将帮助初学者和每个人。项目文件结构:

通过在步骤定义中注入上述 testcontext 构造函数,我们能够拆分我们的大定义,并且大多数测试用例都可以正常工作。但是,当我们尝试使用在两步定义之间具有一些共享数据的方法时,问题就来了。

功能文件:

TestContext 看起来像:

步骤定义:LoginStepDef

步骤定义:ProductStepDefs

步骤定义:PaymentStepDefs

我们想在第二种情况下访问用户选择的产品名称和 ID,并在第三种情况下进行验证。第二个场景在 ProductStepDefinition 类下,相同功能文件的第三个场景在 PaymentStepDefinition 类下。

有人可以建议一种在此框架之间添加一个类的方法,该类可以解决在多个定义之间共享不同数据类型的多个数据的问题

0 投票
0 回答
689 浏览

cucumber - 错误 org.picocontainer.PicoCompositionException:不允许重复键。复制

我试图使用 pico Container 实现 Cucumber 功能级别的并行执行。当我在如下上下文类中使用共享驱动程序时,我得到org.picocontainer.PicoCompositionException: Duplicate Keys not allowed。复制

//跑步者类

0 投票
1 回答
60 浏览

selenium - 带有 PicoContainer 的 Appium Cucumber 框架的测试数据类 POM

我有一个使用 Appium、TestNg、Cucumber、PicoContainer 的原生 iOS 测试框架

我正在寻找最好的方法来存储从一个步骤/场景中获取的数据,以后可以用来断言另一个场景

示例:场景:用户可以用 {var1} 回答调查问题给定用户对调查问题的回答,然后显示成功屏幕

场景:先前回答的问题具有用户最初发送的值 在 reviewMyAnswers 屏幕上给定用户 然后回答 {var1} 的保持值

我只是举个一般的例子。实际上,我有很多这样的数据需要验证,我想将第一个场景的答案存储在单独的类中,然后在需要时通过键和值对以某种方式检索它

我看过教程(谷歌上只有几个),但无法获得它们它们看起来都比他们想象的要复杂得多

我的应用程序不是太大,我想我只会使用一个 stepdefs 文件。但我仍然不想为此目的使用静态变量,因为我计划将来使用并行化

0 投票
0 回答
106 浏览

bdd - Picocontainer 未与步骤文件共享数据,我的测试被跳过

我的问题与 picocontainer 有关,执行测试运行程序时我无法弄清楚我做错了什么. 我的项目包含以下文件 1)1 步骤定义 2)功能文件 2)运行程序文件 4)测试上下文(共享状态文件,这里我提到了 webdriver 和页面对象元素)

POM 文件

功能文件 功能:自动端到端测试 描述:此功能的目的是测试 End 2 End 集成。

场景:客户通过搜索购买物品下订单给定用户在主页上当他搜索“连衣裙”并选择第一次购买该物品并从迷你购物车移动到结帐并在结帐页面上输入个人详细信息并放置命令

步骤定义

亚军文件

测试环境

0 投票
1 回答
91 浏览

jbehave - Jbehave 与 pico 并行执行 (jbehave-pico)

我是新的 Jbehave。我试图找到一种通过 Jbehave 实现黄瓜世界的方法。我使用 jbehave 和 pico 原型生成了项目。我试图并行运行两个故事。我将 pom.xml 中的线程更新为 2。考虑如下示例 stepdef 类

我有如下 Pojo 模型

我的两个故事如下 PojoOne.story

PojoTwo.story

我有 MyStories 类,它扩展了 JUnitStories,如下所示

当我不并行运行故事时,它们会成功。当我并行运行故事时,它们失败了。

我找不到有关如何与 Jbehave 和 pico 并行运行测试的文档。此外,我需要在我的 stepdef 类之外有一个模型,因为我将拥有多个共享同一个模型实例的 stefdef 类。