使用Arquillian运行客户端测试时预填充内存数据库

时间:2014-05-02 17:47:56

标签: ejb h2 jboss-arquillian

我有以下要求:

我想测试我的UI(使用石墨烯和无人机)但我需要在所有测试之前登录应用程序。我在jboss中有一个Database authentication Realm,用于测试使用H2内存数据库。所以我需要的是在users表中的所有测试之前添加用户(用户名,密码),这样我就可以在我的应用程序中成功登录。

我首先尝试在测试类中注入我的用户EJB,这样我就可以在数据库中的所有测试之前创建用户。这是不可能的,因为UI测试在客户端上运行(testable = false)。很明显,当时我并不确切知道arquillian是如何运作的......

然后我尝试使用arquillian持久性扩展和@UsingDataSet注释,但这也因为同样的原因而失败(虽然我不知道为什么,因为我不确切地知道这个注释是如何工作的。)

最后,我尝试使用@Startup注释创建一个Singleton EJB,并在其@PostConstruct方法上创建我需要的用户。在调试时,我可以在H2控制台中看到用户已创建。但是当我运行我的测试时,登录仍然失败。

有人可以解释为什么这最后一个案例失败,因为我不明白。但最重要的是,如果有人知道如何做这项工作,我会非常感激!

1 个答案:

答案 0 :(得分:0)

因此,当您运行客户端测试时,您的存档中不会添加任何内容。如果可以,请将您的存档标记为testable=true,然后将这些扩展程序添加到测试中。您可以执行诸如在服务器上运行的设置方法之类的操作,但是不会向您发送用户的值。您需要插入它们。只要您对这种需求感到满意,这应该适合您。