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

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

最佳答案

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

关于java - 如何测试 org.jboss.seam.postInitialization 的观察者是否正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1762014/

相关文章:

java - 在eclipse中监控java线程

java - 单元测试框架 - TestNG 使用可配置值来定义 threadPoolSize

python - 将 Python "Mixer"库与带有构造函数参数的 SQL Alchemy 模型一起使用

java - 抛出异常时 Servlet 过滤器不工作

java - 为什么Java中System类声明为 "final"?

java - JPA级联不插入外键

java - 二维码编译错误

Django 单元测试 on_delete CASCADE

java - JBoss 接缝 : are inherited methods intercepted?

jquery - 如何将seam与jQuery集成