4

我正在使用 Selenium 1.x 和 Spring 3.0 设置 JUnit 4.7 测试。

我想扩展 Selenium 的SeleneseTestCase快捷方式和它提供的约定(更重要的是,Selenium IDE 生成的代码似乎期待这一点)。然而,我希望在执行过程中出现 Spring 上下文和其他优点。

因为我无法扩展 Spring 的AbstractJUnit4SpringContextTests,所以我尝试用@RunWith(SpringJUnit4ClassRunner.class). 这成功地设置了 Spring,但在 Selenium 执行中引起了一些奇怪:例如,测试执行缓慢并且浏览器窗口保持打开状态。我想它覆盖了 Selenium 的某些部分(只是一个猜测)......不幸的是,基SeleneseTestCase类只允许更改一组受限制的参数,例如排除设置执行速度(让我想知道,如果基类那么好毕竟...)。

据我了解,为了使 Spring 的所有花里胡哨都能正常工作,我必须扩展AbstractJUnit4SpringContextTests或用@RunWith(SpringJUnit4ClassRunner.class). 但是,前者我做不到,后者带来问题。

@ContextConfiguration加载上下文,但至少依赖注入不起作用。那是我停下来的地方。

如何使用 Selenium(或任何其他具有相同案例的库)巧妙地初始化 Spring?

编辑:使文本更具可读性。

4

1 回答 1

1

我对类似的问题感到恼火,足以编写一个 MethodRule 实现,该实现将加载 Spring 上下文并自动装配它的主机测试。也许这就是您正在寻找的东西的开始。

它将允许您执行以下操作:

@Rule
public TemporarySpringContext context = new TemporarySpringContext("context.xml");

@Autowired
MyService myServiceBean;

如果您有任何改进,请告诉我。

于 2010-06-30T15:16:08.577 回答