我的Arquillian测试用例中有哪些类别的应用程序可用?

时间:2013-06-13 10:01:42

标签: jboss-arquillian shrinkwrap

我意识到在运行导致问题的arquillian测试用例期间会使用一些未添加到我的shrinkWrap存档中的类。

我的应用程序配置中有一个启动功能,带有这样的签名

  

public void boot(@Observes StartupEvent startupEvent,                 ExternalContext externalContext,应用程序应用程序,                 ProjectStage deltaspikeProjectStage)

(当JSF准备好并启动并运行时发送startUpEvent)并且这不会添加我的ShrinkWrap,但是当我运行测试用例时,它们会调用我的启动函数。 这种不必要的召唤破坏了每一件事。当我评论这个函数时,我的测试用例运行正常。

我在想我的测试用例的可用类应该使用像

这样的命令添加到ShrinkWrap存档中
WebArchive webArchive=  ShrinkWrap
                    .create(WebArchive.class, "ROOT.war")
                    .addClasses(CdiTestBean.class,PersistenceListener.class)

但似乎我错了。我应该怎么做才能使一个类不能用于shrinkWrap存档!!

2 个答案:

答案 0 :(得分:1)

如果您使用的嵌入式容器可能存在问题,因为所有CDI bean都位于同一个类路径中。因此,它们可能是由嵌入式容器/ cdi实现扫描的。如果可能的话,尝试使用托管版本,这应该给你正确的隔离。

答案 1 :(得分:0)

在返回webArchive之前添加此行:

new ZipExporterImpl(webArchive).exportTo(new File(System.getProperty("java.io.tmpdir"), "myWebArchive.war"), true);

它会将您的Web存档保存到Java的临时系统文件夹中的文件中。

提取战争以检查是否所有必需的类都在那里。

调用方法addClasses(Class... classes)应该将类添加到战争中。