2013-10-14 2 views
1

Arquillian이 포함 된 테스트를 작성하고 있습니다. 하지만 콩이 View Scope에있을 때 나는 문제에 직면하고있다. 방금 샘플 코드를 게시했습니다. 내 DataBean이 ViewScope에있을 때 실행되지 않고 예외가 발생합니다. 하지만 RequestScope으로 변경하면 문제가 없습니다.ViewScoped에서 Bean을 처리 할 때 Arquillian 테스트가 실패했습니다.

@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입니다.

답변

1

테스트 호출 중에 뷰 범위가 활성화되어 있지 않기 때문입니다. 이 방법을 실행하려면 무인 항공기/그래 핀과 같은 것을 사용해야합니다. 실행중인 HTTP 요청이 응용 프로그램의 웹 페이지가 아닌 arquillian 테스트 러너 서블릿에 대한 것이기 때문에 활성화되지 않았습니다. ViewScope은 애플리케이션의 특정 페이지입니다.

0

Arquillian 테스트 실행 중에 컨트롤러의 JSF 컨텍스트를 조롱하고 "범위 유형 ViewScoped에 활성 컨텍스트 없음"이라는 성가신 예외를 제거 할 수 있습니다.

확인 JSF 2.0 원래 프로젝트 : https://github.com/it-crowd/mock-contexts-extension

또는 JSF 2.2에 대한 내 업그레이드 : https://github.com/kesha/mock-contexts-extension

당신이 필요로하는 모든 시험 방법 전에 @ViewScopeRequired 추가 주석이다.