1

我创建了 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 的新手,所以也许我做错了。请告诉我是否有更好的方法。

4

1 回答 1

0

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

于 2010-10-08T13:42:11.720 回答