4

我想用 Arquillian 测试一个 Java EE 应用程序。一个简单的设置是把一些测试类放到 Arquillian 管理的服务器上来测试它们。

现在,我想使用在构建过程中构建的 EAR 文件。和

@Deployment
public static EnterpriseArchive createDeployment() {
    File earFile = ...
    EnterpriseArchive archive = ShrinkWrap.createFromZipFile(EnterpriseArchive.class, earFile);
    return archive;
}

我可以通过 Arquillian 将 EAR 放到 JBoss 中。我看到了部署,部署期间没有错误。只有 Arquillian 返回一个错误,它找不到测试类,这显然是可以的。

现在是在哪里放置测试类的问题。我可以将测试类放入 Arquillian 放入 EAR 的 test.war 中,但我得到了 ArquillianServletRunner not found 异常。当我将测试类作为模块或库放入 JAR 文件中时,当作为模块放入时找不到测试类,或者由于依赖问题而作为库放入时注入不起作用。

我必须把测试课放在哪里???

我的 arquillian.xml:

<?xml version="1.0" encoding="UTF-8"?>
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://jboss.org/schema/arquillian"
    xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">

   <defaultProtocol type="Servlet 3.0" />

    <container qualifier="jboss7" default="true">
        <configuration>
            <property name="jbossHome">${cargo.dir}/jboss-as-dist-7.1.1.Final/jboss-as-7.1.1.Final</property>
        </configuration>
    </container>

    <engine>
        <property name="deploymentExportPath">target/deployments</property>
    </engine>

</arquillian>
4

3 回答 3

1

您可以使用 @Deployment(testable = false) 在客户端运行您的测试类,但这有一个缺点,即您目前无法使用持久性扩展(可能还有其他)。

我的示例代码:

@RunWith(Arquillian.class)
public class PersonWebServiceIT {

    private PersonWebService service;

    @Deployment(testable = false)
    public static Archive<?> createDeployment() {
        return ShrinkWrap
                .create(ZipImporter.class, "test.war")
                .importFrom(
                        new File("simple-webservice-1.0.0-SNAPSHOT.war"))
                .as(WebArchive.class);
    }

    @Test
    public void testFindPersons(@ArquillianResource URL deploymentUrl) {
        ....
    }

}
于 2013-02-04T15:53:54.003 回答
0

把测试课放在耳朵里的战争确实对我有用

WebArchive war = ear.getAsType(WebArchive.class, "/mywarname.war");
war.addClass(MyTestClass.class);
于 2013-04-21T20:26:16.633 回答
0

当我处理现有的 EAR 时,我更喜欢将运行测试的 WAR 与我放入特殊 JAR 以及其他测试 EJB 的实际测试分开。我已经发布了一个示例,如何application.xml在类似问题下进行必要的操作:https ://stackoverflow.com/a/17036383/1667977

于 2013-06-11T06:41:56.870 回答