org.jboss.seam.postinitialization의 관찰자를 테스트하는 방법이 올바르게 작동합니다

StackOverflow https://stackoverflow.com/questions/1762014

문제

나는 전역 관리자 권한이있는 한 명 이상의 사용자가 존재하는지 확인하고 아니오 인 경우 하나를 생성하는 Seam 구성 요소를 만들었습니다.

@Name("installer")
@Stateless
public class InstallerBean implements Installer, Serializable{
   @Observer("org.jboss.seam.postInitialization")
   public void install() {
      ...
   }

   public boolean isInstalled() {
      ...
   }
}

이제 설치 프로그램이 올바르게 작동하는 것을 테스트해야합니다. ISINSTALLED () 반환을 확인하고 데이터베이스에 올바른 사용자와 역할이 존재하는지 확인해야합니다. 그러나 SeamTest.componentTest.testComponents ()가 설치가 완료되기 전에 실행 중입니다. 로그에서 설치 프로그램의 마지막 메시지가 두 번째 테스트 실행 중간에 나타나서 테스트가 무작위로 실패한다는 것을 알 수 있습니다.

다음과 같은 방식으로 설치 프로그램을 테스트하려고합니다.

public class InstallerTests extends SeamTest {
    @Test
    public void isInstalledTest() {
        new ComponentTest() {
            @Override
            protected void testComponents() {
               ...
            }
        }
    }

    ...
}

설치가 완료 된 후 테스트를 시작하려면 어떻게해야합니까?

나는 이음매를 처음 접 했으므로 아마도 모든 것이 틀림없이 잘못하고있을 것입니다. 더 나은 방법이 있는지 알려주세요.

도움이 되었습니까?

해결책

어쩌면 당신은 이미 당신을 해결했을 것입니다. 실행 중에 일부 방법을 비동기로 부릅니다. install()? 이것은 설치 완료를 무작위로 지연시킬 수 있습니다. 매우 실용적이지만 가장 깨끗한 솔루션은 사용하는 것입니다. Thread.sleep(.) 테스트 사례에서 설치가 완료 될 때까지 기다립니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top