gpt4 book ai didi

java - 将 Spring-wired 库与 robotsframework 结合使用

转载 作者:行者123 更新时间:2023-12-01 15:45:52 25 4
gpt4 key购买 nike

我有一个用于集成测试的精心设计的 Spring bean 设置。现在,我正在考虑编写一个 Robot 库,以向 Robot 测试公开我的测试数据创建/行为执行/断言方法。

但是我从 the Robot Framework user guide 了解到的缺点是Robot只能通过调用构造函数来实例化库类。这很糟糕,因为我宁愿让 Spring 管理我的实例。

理想情况下,我希望能够为 Robot 提供应用程序上下文的路径和库的 bean 名称。如果做不到这一点,我希望 Robot 能够调用静态工厂方法而不是构造函数,这样我就不会被迫创建一个新实例。

我想到的一个解决方法是在静态初始化程序中创建 Spring 上下文,并通过从该上下文获取 bean 来连接我的依赖项。

我原来的类看起来像:

public class MyAwesomeTests {

@Autowired
private ThisHelper thisHelper;

@Autowired
private ThatHelper thatHelper;

// implementations of test steps and such

}

因此,我将上面的 @Autowired 字段更改为 protected,并创建一个子类来静态初始化 Spring 上下文并定义一个机器人友好的构造函数:

public class RobotFriendlyTests extends MyAwesomeTests {

private static final ApplicationContext CONTEXT = new ClassPathXmlApplicationContext(...);

public RobotFriendlyTests() {
this.thisHelper = (ThisHelper) CONTEXT.getBean("thisHelper");
this.thatHelper = (ThatHelper) CONTEXT.getBean("thatHelper");
}
}

这应该可行,但感觉有点笨拙。我应该考虑更好的方法吗?更好的是,是否有一个机器人扩展已经为我做到了这一点?

最佳答案

您是否考虑过使用 Spring @Configurable,那么即使是由普通 new 创建的实例也会成为 Spring 管理的 bean。

@参见Spring引用章节7.8.1 Using AspectJ to dependency inject domain objects with Spring

关于java - 将 Spring-wired 库与 robotsframework 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7023452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com