我正在编写嵌入Arquillian的测试。但是当我的bean在View Scope中时,我面临问题。我刚刚发布了示例代码。当我的DataBean位于ViewScope中时,它不会运行并引发一些异常。但是,当我将其更改为RequestScope时,它工作正常。

@RunWith(Arquillian.class)
public class MockTest {

@Deployment
    public static Archive<?> createDeployment() {
        JavaArchive jar = ShrinkWrap.create(JavaArchive.class)
            .addClass("pack.ui.DataBean")
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
        return jar;
    }

@Inject
private DataBean dataBean;

@Test
public void testDataBean() throws Exception {

    dataBean.checkSystemStatus();

    Assert.assertEquals(status, true);

}

@ViewScoped
@Named("dataBean")
public class DataBean {
    public boolean checkSystemStatus() {
        return true;
    }
}


有人可以告诉我们,我们可以将ViewScope与Arquillian或其他我要做的事情一起使用吗?

最佳答案

这是因为在调用测试期间视图范围未激活。要以这种方式运行它,您需要使用诸如drone / graphene之类的东西。它不处于活动状态,因为运行的HTTP请求针对的是Arquillian测试运行器servlet,而不是针对应用程序的网页。 ViewScope特定于您的应用程序中的页面。

10-01 18:30