【问题标题】:How to inject a Drone instance without managing its lifecycle?如何在不管理其生命周期的情况下注入 Drone 实例?
【发布时间】:2023-03-09 13:47:01
【问题描述】:

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

@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 中工作,无论其范围如何。只有测试拥有管理无人机生命周期的知识。一个页面应该只使用它被调用的任何上下文。我怎样才能做到这一点?

【问题讨论】:

    标签: arquillian-drone graphene2


    【解决方案1】:

    这可能是答案:

    public class MyPage {
    
        @ArquillianResource
        private WebDriver driver;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 2019-05-07
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多