私は@DependsOnアノテーションを持つシングルトンを試そうとします。ここでは、前に初期化しなければならない別のシングルトンをマークします。しかし、テストでは、私はそれらをロードしたくない、私のテストのための多くの役に立たないクラスです。例の場合:私は注釈@DependsOnにシングルトンのクラスを参照してくださいしないarquillian例外が発生しましたArquillianテストで@DependsOnアノテーションを無効にする方法はありますか?
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("***----------------------------------***");
}
}
:
@Singleton
@DependsOn({"anotherSingleton1", "anotherSingleton2"...})
public class SomeSingleton {
... methods and logic...
}
は、ここではテストの例です。しかし、私がテストアーカイブにそれらを含めるなら、私はすべての依存関係も含めなければなりません。そして、@ PostConstruct'sのinitsというロジックを嘲笑してください。だから...どのようにして@DependsOnを無効にしたり、模擬することができますか? 私はwildflyで管理されたコンテナでarquillianを使用します。
私はダミーシングルトンを作成し、@DependsOnで必要に応じて@Singleton(name = "amotherSingleton1")という名前をつけて、ShrinkWrapアーカイブに含めました。私のプロジェクトで、モックと同じように作成された無駄なクラスがあるときは好きです:)誰かがそれを実現する方法を知っていれば、私はあなたに謝るでしょう! –