Ich versuche Singleton zu testen, die Annotation @DependsOn haben, wo ich andere Singletons markiere, die vorher initialisiert werden müssen. Aber im Test möchte ich sie nicht laden, weil es viele nutzlose Klassen für meinen Test gibt. Für die Ex:Wie deaktiviert @DependsOn Annotation in Arquillian Tests?
@Singleton
@DependsOn({"anotherSingleton1", "anotherSingleton2"...})
public class SomeSingleton {
... methods and logic...
}
Hier Beispiel 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("***----------------------------------***");
}
}
ich Ausnahme bekam, die nicht sehen Klassen von Singletons in Anmerkung @DependsOn Arquillian. Aber wenn ich sie in das Testarchiv einbeziehe, muss ich auch alle ihre Abhängigkeiten einbeziehen. Und verspotten Sie eine Logik in ihnen, die in @ PostConstruct's. Also ... Wie kann ich @DependsOn deaktivieren oder vortäuschen? Ich benutze Arquillian mit wildfly verwalteten Container.
Ja, ich habe gerade versucht ähnliches Ding - ich habe Dummy-Singletons erstellt und benannte sie (@Singleton (name = "amotherSingleton1") wie bei @DependsOn erforderlich. Und sie in das ShrinkWrap-Archiv. Funktioniert gut, aber ich don Es ist wie wenn es in meinem Projekt nutzlose Klassen gibt, die nur als Mocks erstellt wurden :) Wenn jemand weiß, wie man das mit Mockito realisiert - ich werde dir dankbar sein! –