J'essaie de tester singleton qui ont des annotations @DependsOn où je marque d'autres singletons qui doivent être initialisés avant. Mais en test je ne veux pas les charger, car c'est beaucoup de classes inutiles pour mon test. Ex:Comment désactiver l'annotation @DependsOn dans les tests arquilliens?
@Singleton
@DependsOn({"anotherSingleton1", "anotherSingleton2"...})
public class SomeSingleton {
... methods and logic...
}
est ici exemple de test:
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("***----------------------------------***");
}
}
Je suis exception que Arquillian ne voit pas les classes de singletons dans l'annotation @DependsOn. Mais si je les inclue dans les archives de test, je devrai également inclure toutes leurs dépendances. Et se moquer de la logique qui est inits dans @ PostConstruct. Alors ... Comment désactiver ou mocker @DependsOn? J'utilise l'arquillian avec un conteneur géré par wildfly.
ouais, j'ai juste essayé la même chose - j'ai créé des singletons factices et les ai nommés (@Singleton (name = "amotherSingleton1") comme requis au @DependsOn.) Et les ai inclus dans l'archive ShrinkWrap. J'aime pas quand il y a des classes inutiles dans mon projet qui a été créé comme des rires :) Si quelqu'un sait comment réaliser cela avec mockito - je serai appriciate à vous! –