org.jboss.seam.postinitialization의 관찰자를 테스트하는 방법이 올바르게 작동합니다
-
21-09-2019 - |
문제
나는 전역 관리자 권한이있는 한 명 이상의 사용자가 존재하는지 확인하고 아니오 인 경우 하나를 생성하는 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(.)
테스트 사례에서 설치가 완료 될 때까지 기다립니다.
제휴하지 않습니다 StackOverflow