Java 查看范围中的bean时Arquillian测试失败

Java 查看范围中的bean时Arquillian测试失败,java,jsf,jboss-arquillian,Java,Jsf,Jboss Arquillian,我正在用Arquillian编写测试。但当我的bean处于视图范围时,我就面临这个问题。我刚刚发布了我的示例代码。当我的数据库在ViewScope中时,它不会运行并引发一些异常。但是当我将它改为RequestScope时,它工作得很好 @RunWith(Arquillian.class) public class MockTest { @Deployment public static Archive<?> createDeployment() {

我正在用Arquillian编写测试。但当我的bean处于
视图范围时,我就面临这个问题。我刚刚发布了我的示例代码。当我的数据库在
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;   
    }
}
@RunWith(Arquillian.class)
公共类模拟测试{
@部署
公共静态存档createDeployment(){
JavaArchive jar=ShrinkWrap.create(JavaArchive.class)
.addClass(“pack.ui.DataBean”)
.addAsManifestResource(EmptyAsset.INSTANCE,“beans.xml”);
返回罐;
}   
@注入
私有数据库;
@试验
public void testDataBean()引发异常{
dataBean.checkSystemStatus();
Assert.assertEquals(状态,true);
}
@视域
@命名(“数据库”)
公共类数据库{
公共布尔值checkSystemStatus(){
返回true;
}
}

有人能告诉我,我们可以将ViewScope与Arquillian一起使用吗?或者我必须做的任何事情。

这是因为在调用测试期间,ViewScope不处于活动状态。要以这种方式运行它,您需要使用类似于无人机/石墨烯的东西。它不处于活动状态,因为运行的HTTP请求是针对Arquillian测试运行程序servlet的,不是应用程序的网页。ViewScope特定于应用程序中的某个页面。

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

您可以模拟控制器的JSF上下文,并在Arquillian测试执行期间消除恼人的异常“没有作用域类型ViewScope的活动上下文”

检查JSF 2.0的原始项目:

或者我对JSF 2.2的升级:


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

您可以模拟控制器的JSF上下文,并在Arquillian测试执行期间消除恼人的异常“没有作用域类型ViewScoped的活动上下文”

检查JSF 2.0的原始项目:

或者我对JSF 2.2的升级:

您只需要在测试方法之前添加注释@ViewScopeRequired