如何在不管理生命周期的情况下注入Drone实例?

时间:2017-08-04 16:09:35

标签: arquillian-drone graphene2

我有一个石墨烯页面对象。

@Location("/page")
public class MyPage {

    @Drone
    private WebDriver driver;

    // page methods using the driver

}

使用页面对象的测试类。

@RunWith(Arquillian.class)
public class MyTest {

    @Test
    public void test(@InitialPage MyPage page) {
        // use page & assert stuff
    }

    @Test
    public void anotherTest(@InitialPage MyPage page) {
        // use page & assert stuff even harder
    }

}

现在,我已经决定MyTest应该使用方法范围的Drone实例。所以我添加......

public class MyTest {

    @Drone
    @MethodLifecycle
    private WebDriver driver;

现在,当我运行测试时,我得到两个浏览器,所有测试都以错误结束。显然,这个生命周期管理也被视为限定符。

是的,在MyPage中添加@MethodLifecycle也有帮助。但这不是一个解决方案 - 页面不应该关心这一点,并且应该在任何WebDriver中工作,无论其范围如何。只有测试才有管理无人机生命周期的知识。页面应该只使用它所调用的任何上下文。我怎样才能实现它?

1 个答案:

答案 0 :(得分:0)

这可能就是答案:

public class MyPage {

    @ArquillianResource
    private WebDriver driver;

但是我担心这会跳过一些特定于Drone的丰富内容。当有多个Drone实例时,也不确定它是否能正确解析。