如何测试org.jboss.seam.postInitialization的观察者是否正常工作

时间:2009-11-19 09:31:58

标签: java unit-testing seam testng

我创建了SEAM组件,该组件检查至少一个具有全局管理权限的用户是否存在,如果没有,则创建一个。

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

   public boolean isInstalled() {
      ...
   }
}

现在我需要测试安装程序是否正常工作。我需要检查isInstalled()是否返回true并检查数据库中是否存在正确的用户和角色。但是,在我的安装完成之前,SeamT​​est.ComponentTest.testComponents()正在运行。我可以在日志中看到来自我的安装程序的最后一条消息出现在第二次测试执行过程中,所以我的测试随机失败。

我正在尝试以下列方式测试我的安装程序:

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

    ...
}

如何在安装完成后启动测试?

我是SEAM的新手,所以也许我完全错了。请告诉我是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

也许你已经解决了你的问题。在执行install()期间,您是否异步调用某些方法?这可能会随机延迟完成安装。一个非常实用但不是最干净的解决方案是在测试用例中使用Thread.sleep(.)等待安装完成。