如何在arquillian测试中禁用@DependsOn注释?

时间:2017-07-07 14:25:43

标签: java java-ee mocking integration-testing jboss-arquillian

我尝试测试具有注释@DependsOn的单例,其中我标记了必须在之前初始化的另一个单例。但是在测试中我不想加载它们,因为它为我的测试提供了很多无用的类。例如:

@Singleton
@DependsOn({"anotherSingleton1", "anotherSingleton2"...})
public class SomeSingleton {
... methods and logic...
}

以下是测试示例:

public class SomeSingletonIT extends Arquillian {

    @Mock SomeClassInSingleton;
    ... another mocks...

    @Inject
    @InjectMocks
    SomeSingleton instance;

    @BeforeClass
    public void initMocks() {
        mocks logic
    }



    @Deployment
    public static WebArchive createDeployment() {

        return ShrinkWrap.create(WebArchive.class, "test.war")
                .addClasses(
                        SomeSingleton.class
                        )
                .addAsLibraries(some Libs)
                .addAsWebInfResource(EmptyAsset.INSTANCE,"beans.xml");
    }

    @Test
    public void testGetProactiveSubjects() throws Exception {
        System.out.println("***----------------------------------***");
        assertNotNull(instance);
        ...some assertions...
        System.out.println("***----------------------------------***");
    }

}

我有一个例外,即arquillian在注释@DependsOn中没有看到单例类。但如果我将它们包含在测试档案中 - 我将不得不包括所有他们的依赖项。并嘲笑@ PostConstruct中的一些逻辑。那么......我如何禁用或模拟@DependsOn? 我使用带有野生动物管理容器的arquillian。

1 个答案:

答案 0 :(得分:0)

我想到的一个想法是实现一个双重测试 - dummy object - 您可以在测试部署中替换它而不是部署真正的单例。这样可以避免在部署测试存档时添加大量依赖项和执行开销。