2017-08-04 76 views
0

我有一个石墨烯页面对象。如何注入Drone实例而不管理其生命周期?

@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中工作,而不管它的范围如何。只有测试才具备管理无人机生命周期的知识。一个页面应该只使用它被调用的任何上下文。我该如何实现它?

回答

0

这可能是答案:

public class MyPage { 

    @ArquillianResource 
    private WebDriver driver; 

但我担心这会跳过一些特定的无人驾驶飞机,充实。也不确定当有多个Drone实例时它是否能够正确解析。

相关问题