1

我正在编写嵌入 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 或其他我必须做的事情一起使用吗?

4

2 回答 2

1

这是因为在调用测试期间视图范围未激活。要以这种方式运行它,您需要使用无人机/石墨烯之类的东西。它不是活动的,因为运行的 HTTP 请求是针对 arquillian 测试运行器 servlet,而不是您的应用程序的网页。ViewScope 特定于应用程序中的页面。

于 2013-10-14T22:47:09.130 回答
0

您可以模拟控制器的 JSF 上下文,并在 Arquillian 测试执行期间摆脱恼人的异常“范围类型 ViewScoped 没有活动上下文”。

检查 JSF 2.0 的原始项目:https ://github.com/it-crowd/mock-contexts-extension

或者我对 JSF 2.2 的升级:https ://github.com/kesha/mock-contexts-extension

您所需要的只是测试方法之前的附加注释@ViewScopeRequired。

于 2017-09-21T13:15:51.400 回答