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

有帮助吗?

解决方案

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top