Java 阿奎利安+;TestNG:如何在@Before/@After方法中访问容器管理的对象?
我找不到任何令人满意的解决这个问题的方法,尽管其他人以前也遇到过 我想测试一个使用dao修改持久数据的业务bean dao可以注入测试方法,因为它是ejb 如何在典型的Java 阿奎利安+;TestNG:如何在@Before/@After方法中访问容器管理的对象?,java,testng,jboss-arquillian,Java,Testng,Jboss Arquillian,我找不到任何令人满意的解决这个问题的方法,尽管其他人以前也遇到过 我想测试一个使用dao修改持久数据的业务bean dao可以注入测试方法,因为它是ejb 如何在典型的@Before/@After方法中使用它,例如清理数据库 简要示例: @PersistenceTest public class MyTestClass extends Arquillian { @Inject private Dao dao; @Inject private MyBean myBean;
@Before/@After
方法中使用它,例如清理数据库
简要示例:
@PersistenceTest
public class MyTestClass extends Arquillian {
@Inject private Dao dao;
@Inject private MyBean myBean;
@BeforeMethod
public void cleanDB () {
dao.remove(foo); // Currently throws NPE as dao is not injected.
}
@Test
public void someTest () {
// In a Test-method dao is available and calling cleanDB from here also
// works as intended....
}
}
据我所知,只有测试方法在容器中执行。我发现的大多数信息似乎都过时了
有什么好办法可以做到这一点吗
谢谢大家!
我正在使用(托管)Wildfly 8作为应用服务器。Arquillan两次调用@Before**和@After**方法。 一次进入客户机模式,一次进入容器模式 到目前为止,我找到的唯一解决方案是,在使用dao之前,必须验证dao是否已注入,如下所示:
@BeforeMethod
public void cleanDB () {
if (dao != null) {
dao.remove(foo);
}
}
因此,如果创建断点并运行代码,则应该有2个此方法的调用:
第一:道是空的
第二:注射dao
希望有帮助
有关更多信息,请参见