@Singleton
で注釈が付けられたメソッドを含む、 で注釈が付けられた Producers クラスがあり@Produces
ます。
この方法の代替を使用して単体テストを作成したいのですが、それを行うことができません。ここに私のコードの要約があります:
package fr.easycompany.easywrite.tools.injection;
@Singleton
public class Producers {
@Produces @Named(PREFERENCES_FILE_NAMED)
public String producePreferenceFileName(){
return "preferences.xml";
}
}
そして私の代替:
package fr.easycompany.easywrite.tools.injection;
@Singleton
@Alternative
public class ProducersAlternative {
@Produces @Named(PREFERENCES_FILE_NAMED)
public String producePreferenceFileName(){
return "preferences_test.xml";
}
}
また、src/test/resources/META-INF に次の内容の beans.xml を作成しました。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:weld="http://jboss.org/schema/weld/beans"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd
http://jboss.org/schema/weld/beans http://jboss.org/schema/weld/beans_1_1.xsd">
<alternatives>
<class>fr.easycompany.easywrite.tools.injection.ProducersAlternative</class>
</alternatives>
</beans>
実行時には、常にProducers#producePreferenceFileName()
どちらが呼び出されます。なぜそれはProducersAlternative
方法ではないのですか?シングルトン注入されたクラスの代替を持つことは不可能ですか?