0

@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方法ではないのですか?シングルトン注入されたクラスの代替を持つことは不可能ですか?

4

1 に答える 1