2010-02-18 7 views
2

Backing Bean을 생성하기 전에 컨텍스트에 값이 제공되지 않으면 Seam 구성 요소에 대한 단위 테스트가 실패합니다. 나는 이것을 수동으로 테스트 할 수 있었지만 단위 테스트로이 시나리오를 다루고 싶습니다.예외 필터 및 expectedExceptions 주석을 사용한 Seam 유닛 테스트

기본적으로 org.jboss.seam.InstantiationException은 Seam이 백업 빈을 만들려고 할 때 java.lang.IllegalArgumentException에 의해 발생합니다. 이것은 좋은 일이며, 내가 기대하는 바입니다. 문제는 단위 테스트를 작성할 때 new FacesRequest(..) {}.run(); 주위에 try/catch를 두거나 expectedExceptions 주석을 사용할 수 없다는 것입니다. 두 경우 모두 예외가 발견되지 않아 테스트가 실패하게됩니다. 나는이 때문에 Seam의 예외 필터의 가정하지만 필터에 대해 충분히 올바른 패턴이 테스트 해야할지 모르겠어요 ..

는 는

주석과 내 코드는 다음과 같이 보입니다 :

// also tried IlligalArgumentException here 
@Test(enabled = true, expectedExceptions = InstantiationException.class) 
public void noDataTest() throws Exception 
{ 
    login(USERNAME); 

    // the stack trace says that the test fails on the next line. 
    // this is expected. 
    new FacesRequest("/blah/blah/show.xhtml") { 

     @Override 
     protected void updateModelValues() { 
     } 

     @Override 
     protected void invokeApplication() 
     { 
      // we should never get here 
      // i'll put an failure here eventually 
     } 
    }.run(); 
} 
+0

@Chris Williams 좋은 내용이지만 구성 요소, 범위, 각 테스트 메소드가 포함 된 항목 –

+0

@Arthud Ronald FD Garcia, 내가 문제를 알았을 때 나는 더 많은 정보를 제공하려고했다. 아래 답변을 참조하십시오 .. –

답변

2

답변을 찾았습니다. 바라기를 벽에 머리를 두드리는 다른 누군가를 도울 수 있기를 바랍니다.

특정 예외를 찾고 있었지만 Seam이 예외를 잡아서 오류가 발생했다고 주장하고 java.lang.AssertionError (java.lang.Exception이 아닌 java.lang.Error). 올바른 Throwable을 잡아서 주석에 올바른 유형을 사용하면 이제 작동합니다 ..

+0

+1. 이 대답을 표시하는 것을 잊지 마시기 바랍니다 ** **. 당신은 당신 자신의 대답을 받아 들일 수 있습니다. 그렇지 않으면 커뮤니티가 받아 들일 수 없기 때문에 커뮤니티에서이 주제를 번갈아 가다 볼 수 있습니다. – BalusC

+0

할거야. 1 일을 기다려야합니다 ... –

+0

알아 두실 사항 (+1) –

0

당신의 테스트 케이스가 뒷쪽 콩에 빈 no-arg 생성자를 기대하고 있다고 생각합니다.

+0

@foo, 이것은 실제로 속성을 주입해야하는 bean이며 조회를 수행하기 위해 init() 메서드에서 해당 속성을 사용합니다. 해당 특성이 없기 때문에 조회가 실패하고 (IllegalArgumentException) 오브젝트를 작성할 수 없습니다 (InstantiationException). 문제는 throw 된 예외를 try/catch 또는 expectedExceptions 주석으로 catch 할 수 없다는 것입니다. –