首页 > 解决方案 > 如何解决 arquillian 静态变量 = null

问题描述

自从我升级到 WildFly 23 以来,我一直无法使用 shrinkwrap/arquillian 来正确解析类。

这是 createDeployment 函数

    public static Archive<?> createBasicShrinkWrappedDeployment()
    {
        File[] mavenImports = Maven.resolver()
                .loadPomFromFile("pom.xml")
                .importRuntimeDependencies()
                .resolve()
                .withTransitivity()
                .asFile();

        return ShrinkWrap.create(WebArchive.class, "<project>-tests.war")
                .addAsLibraries(mavenImports)
                .addPackages(true, "org.<company>.crs")
                .addAsResource("jbossas-managed/test-persistence.xml", "META-INF/persistence.xml")
                .addAsResource("jbossas-managed/test-orm.xml", "META-INF/orm.xml")
                .addAsResource("templates/email/template1.vm")
                .addAsResource("templates/email/template2.vm")
                .addAsResource("templates/email/template3.vm")
                .addAsResource("templates/email/template4.vm")
                .addAsResource("templates/pdf/template5.vm")


                .addAsWebInfResource("beans.xml", "beans.xml");
    }

我的问题是,对于测试,我们有一些测试数据存在于:org.<company>.crs.utils,它是我们用于功能测试的一堆静态数据,用于将预期的数据库数据与静态数据进行比较应用程序。这是一个例子:

package org.<company>.crs.utils;
public class UserInfo{
    public static class Id
    {
        public static UUID Steve = UUID.fromString("...");
        public static UUID TestPerson = UUID.fromString("...");
        public static UUID Anonymous = UUID.fromString("...");
    }
    ... <more test classes like Id>
}

现在,当我们运行测试时,我们可能会运行以下内容:

Assert.assertEquals(permission.getIdentityId(), UserInfo.Id.Steve);

但是,UserInfo.Id.Steve 为空,我假设这是一个收缩包装或 arquillian 问题,因为该数据是静态定义的并且不能为空。

这一直有效,直到我们将应用程序服务器从 WF8 更新到 WF23(并在此过程中进行了许多其他更改)。想知道是否有人知道这是什么原因造成的,或者如何解决?

标签: javamavenjboss-arquillianshrinkwrap

解决方案


故障排除过程的进一步发展得出结论,这是(我认为)我的 IDE 而不是测试框架的问题。有关 IDE 问题的新问题的链接,请参阅上述评论。


推荐阅读