ViewScoped中的bean时,Arquillian测试失败

时间:2013-10-14 08:33:09

标签: java jsf jboss-arquillian

我正在用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或其他任何我必须做的事情一起使用。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

你可以模拟控制器的JSF上下文并摆脱烦人的异常&#34;没有活动的上下文用于范围类型ViewScoped&#34;在Arquillian测试执行期间。

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

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

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