问题标签 [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.
dependency-injection - PicoContainer JSR-330 @Named 支持?
PicoContainer 似乎表明它支持 JSR-330@Inject
和@Named
. (不,这个其他问题似乎没有帮助,因为它没有解决 PicoContainer 站点说已添加对 JSR-330 的一些支持这一事实。)
我像这样向容器中添加一些东西:
我用以下标记构造函数参数@Named
:
但是当我尝试获取Foo
实例时,PicoContainer 抱怨它有太多Bar
实例可供选择。
问题 1:如何让 PicoContainer@Named
用于构造函数注入?
然后我尝试在里面使用字段注入Foo.java
:
那也行不通。
问题 2:如何让 PicoContainer 使用@Inject
并@Named
用于构造函数注入?
还是PicoContainer 新闻页面错了,根本没有任何 PicoContainer 2.x 对 JSR-330 的支持?
java - Cucumber-jvm 指定的参数与以下任何构造函数都不匹配:[private java.lang.Class()];
我正在 Android 上测试一个简单的 Cucumber BDD 测试并得到一个黄瓜错误
我无法弄清楚这个错误来自哪里。我错过了什么吗?
我的功能文件
步骤定义
笔记:
- 安卓工作室:1.0.2
- 摇篮:2.2.1
- 黄瓜:1.2.0
- 浓缩咖啡:2.0
java - 如何让 PicoContainer 启动/停止/处置工厂注入的组件?
我有一个缓存所有组件的 PicoContainer。由于它缓存了所有组件,我希望它在容器生命周期的适当时间点调用start
, 。stop
dispose
但是,我发现如果我使用 a 构造一个组件FactoryInjector
,这些方法根本不会被调用,尽管该组件也被缓存了。
举个例子:
运行它的输出如下:
以此类推start()
,我创建并作为实例注入的组件启动。我通过构造函数注入注入的组件被构造然后启动。但是从我通过工厂注入的组件中看不到任何东西。
就文档而言,shows 和 methods 的 Javadoc似乎FactoryInjector
是为工厂本身做自己的生命周期的东西,而不是工厂旋转出来的组件。#start
#stop
#dispose
快速查看源代码表明适配器实现ComponentLifecycle
将调用其方法,但尚不清楚如何将其挂钩。如果我查看其他实现类,几乎所有东西似乎都委托给其他东西,使其成为很难弄清楚到底发生了什么。
这样做的正确方法是什么?有没有合适的方法来做到这一点?
java - 项目无法识别 cucumber-picocontainer 依赖项
我目前正在使用黄瓜、JUnit 和 Selenium 开发一个 java 测试框架。我已经从事过这样的项目,但我在这个项目上遇到了问题。
我正在尝试创建一个单例的 Context 类。我想使用 cucumber-picocontainer 让这个类在每个步骤定义类中都可以访问。我在 pom.xml 中添加了依赖项,但每次尝试执行测试时,都会出现异常:“NewLoginSteps 没有空构造函数。如果需要 DI,请将 cucumber-picocontainer 放在类路径中” . 我尝试手动导入罐子,但没有帮助。
这是我的配置示例:
pom.xml
/li>
测试上下文.java:
一个步骤定义类:
我的 superSepts 类:
你知道我做错了什么吗?我已经使用 picocontainer 来做同样的事情并且它正在工作。
java - 使用 Cucumber、PicoContainer 和 Conductor 框架定义多态步骤
我遇到的问题是在每个 Cucumber 场景运行后机车都没有被终止。然后我留下了孤立的 Selenium 进程,例如:
这是我的 PicoContainer 设置类,以便它将 Locomotive 的实例注入每个 Cucumber 场景(它确实如此):
此条目在我的 cucumber.properties 文件中:
这是一个示例步骤定义类:
在每个场景运行后我可以调用某种清理方法吗?还是一种更好的方式来做我想要实现的目标?
dependency-injection - 向 Pico Container 注册实现列表
我有一个界面
我有这个接口的实现列表:
我想用 Pico Container 做什么:
注册IInterface的所有实现,以便能够将它们解析为列表:
/li>另一种选择是能够使用命名键注册实现:
能够执行以下操作:
/li>
是否有至少第一个问题的内置解决方案?
UPD
- 在 Pico 中发现这个实现非常奇怪且不直观。
为了能够注入一个数组,它是必要的:
这将注入所有实现的数组。但这种行为非常不清楚,也不直观。至于我,最好注册对。
selenium - 构建黄瓜以支持在测试金字塔中测试服务和 ui 层
我已经设置 cucumber 来处理服务(例如 Web 服务 API)级别测试和 UI(例如浏览器 DOM)级别测试。
我使用标签来做到这一点。我用@api标签标记每个 API 级别的场景。在我的 @Before 场景钩子中是一个 if 语句,它检查场景.getSourceTagNames() 是否包含@api。如果未检测到@api,则初始化驱动程序并创建浏览器实例。
由于我的测试使用的是 PageObject 范例,因此步骤定义不受每个页面的 HTML 详细信息的影响。这让我想知道是否可以使用依赖注入来控制加载两组 PageObject 类中的哪一组。第一组将绕过 Selenium 浏览器并直接访问服务器端点以获取要处理的值并发送回步骤定义。第二组将加载 selenium PageObject 类并通过浏览器来满足步骤定义调用。显然,第一组将在比第二组更短(经过)的时间内执行。
所以我开始上网搜索看看其他人做了什么。我看到了 Aslak Hellesøy 的这篇博文。阿斯拉克有话要说:
*“了解测试金字塔的好处的 Cucumber 高级用户更愿意针对中间层运行大多数场景(不通过 UI)。然后他们会选择相同场景的一小部分来运行 UI 并运行那些分开的。
如果您将所有自动化逻辑保留在 AutomationApi 接口后面,您可以提供两种不同的实现——一种直接与域模型对话,另一种使用 Selenium WebDriver 或另一个 UI 自动化库。"*
给定一个 Jenkins CI 服务器,第 1 步是构建软件,第 2 步是运行单元测试,第 3 步是运行域(Web 服务器 API)测试,第 4 步是运行 UI(例如 Web)测试。从而实现了测试金字塔。
有人实现了 Aslak 的想法吗?如果是,场景之间是否存在实际重叠?也就是说,您是否使用 PageObjects 的 API 实现(例如在您的开发环境中)和 HTML(Selenium)PageObject 实现(例如在 CI 上)运行相同的场景?还是测试场景仅是 API xor web?
javascript - 在设计页面对象模型时尝试 BDD cucumber Selenium 时出现此错误
线程“主” cucumber.runtime.CucumberException 中的异常:java.lang.AbstractMethodError:cucumber.runtime.java.picocontainer.PicoFactory.addClass(Ljava/lang/Class;)V 在 cucumber.runtime.java.JavaBackend.addStepDefinition(JavaBackend .java:154) 在 cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:68) 在 cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:41) 在 cucumber.runtime.java.JavaBackend.loadGlue( JavaBackend.java:86) 在 cucumber.runtime.Runtime.(Runtime.java:91) 在 cucumber.runtime.Runtime.(Runtime.java:69) 在 cucumber.runtime.Runtime.(Runtime.java:65) 在 cucumber .api.cli.Main.run(Main.java:35) at cucumber.api.cli.Main.main(Main.java:18) 原因:java.lang.AbstractMethodError: cucumber.runtime.java.picocontainer.PicoFactory .addClass(Ljava/lang/Class;)V 在 cucumber.runtime.java.JavaBackend.addStepDefinition(JavaBackend.java:149) ... 还有 8 个
scala - 在 Cucumber 步骤定义之间传递变量
在 Cucumber 中,我如何在步骤定义类之间传递变量。我试图在 Scala 中实现。
环顾四周,我看到人们建议使用 Guice 或 Picocontainer 或任何其他 DI 框架。但是在 Scala 中还没有真正遇到过一个例子。
例如,对于下面的示例,如何使用 DI 传递变量?
提供者.scala,
消费者.scala,
kotlin - 为什么在 Kotlin 中运行这个特定的 Cucumber 步骤时会出现 ArrayIndexOutOfBoundsException?
我正在使用 Java8 和 PicoContainer 运行 Cucumber JVM 功能文件。我已经删除了这些步骤,所以它们是空的,但我仍然遇到错误。这是我的特点:
(是的,这是一个完整的旅程,而不是 BDD 场景。)
无论出于何种原因,在 Kotlin 中运行此步骤都会导致错误:
虽然这个 Java 类运行得很好:
我完全感到困惑,尤其是因为 Kotlin 步骤类中的“然后”运行良好,而其他步骤运行没有错误:
亚军,完成:
堆栈跟踪是:
这是怎么回事?
当前使用 Kotlin 步骤签入的所有源代码都已在此处注释掉。(请原谅我的混乱,因为我对我正在使用的很多东西都是新手;从最初的峰值重构正在进行中。)