3

我正在阅读 Arquillian 网站 http://arquillian.org/guides/functional_testing_using_drone/上的教程

在“启用客户端模式”的段落下,他们声明可以在同一个测试中混合容器内模式和客户端模式!只需保留可测试属性即可。任何带有@RunAsClient 注解的方法都将从客户端执行,其余的将在容器内执行,为您提供两全其美的体验!

这是我的问题。我想写一个用户测试

@Drone
DefaultSelenium browser and

@EJB
MyXXXRepository

在我进行 Selenium 测试之前,我有一个测试会将用户添加到 InMemory 数据库中,该测试使用该用户登录浏览器...

所以为了让 Selenium 工作,我需要告诉@Deployment 是可测试的=false,这将导致我的@EJB 失败。因此,根据文档,如果我告诉 Selenium 测试方法它应该在客户端模式下运行,我可以跳过 testable=false。根据文档,这应该可以工作。但!!!这将引发异常

Caused by: java.lang.NoClassDefFoundError: Lcom/thoughtworks/selenium/DefaultSelenium;

所以我需要能够告诉

@Drone
DefaultSelenium browser;

也要处于客户端模式...

有接盘侠吗?

4

2 回答 2

0

无人机旨在成为客户端。就我个人而言,我从未尝试过部署 WebDriver/Drone 测试并从服务器运行它。这听起来有点疯狂 :) 显然,由于测试本身是混合的,类加载器抱怨与 Drone 相关的导入。

But I have a solution for you which lets you test from the "grey-box" perspective. There is a fairly new extension in Arquillian universe called Warp which allows you to solve your very problem. Here's the guide.

Hope that helps.

于 2013-05-23T07:22:39.133 回答
0

I solved the problem by using an import script that will import the user prior to the test, this way i do not need to instantiate the repository and it is now a clean client side test.

于 2013-05-27T06:52:11.577 回答