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



我尝试测试具有注释的单例@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与野蝇管理的容器一起使用。

我想到的一个想法是实现一个测试双精度 - 虚拟对象 - 您将在测试部署中替换它,而不是部署真正的单例。这样可以避免在部署受测归档时增加大量依赖项和执行开销。

最新更新