我创建了 SEAM 组件,该组件检查是否存在至少一个具有全局管理员权限的用户,如果不存在则创建一个。
@Name("installer")
@Stateless
public class InstallerBean implements Installer, Serializable{
@Observer("org.jboss.seam.postInitialization")
public void install() {
...
}
public boolean isInstalled() {
...
}
}
现在我需要测试安装程序是否正常工作。我需要检查 isInstalled() 返回 true 并检查数据库中是否存在正确的用户和角色。然而,SeamTest.ComponentTest.testComponents() 在我的安装完成之前正在运行。我可以在日志中看到来自安装程序的最后一条消息出现在第二次测试执行的中间,因此我的测试随机失败。
我正在尝试通过以下方式测试我的安装程序:
public class InstallerTests extends SeamTest {
@Test
public void isInstalledTest() {
new ComponentTest() {
@Override
protected void testComponents() {
...
}
}
}
...
}
如何在安装完成后开始测试?
我是 SEAM 新手,所以也许我做的完全错误。请告诉我是否有更好的方法。
最佳答案
也许你已经解决了你的问题。 install()
执行期间是否异步调用某些方法?这可能会随机延迟完成安装。一个非常实用但不是最干净的解决方案是在测试用例中使用 Thread.sleep(.) 来等待安装完成。
关于java - 如何测试 org.jboss.seam.postInitialization 的观察者是否正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1762014/