我正在编写嵌入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特定于您的应用程序中的页面。