@Produces
주석이 달린 메소드가 포함 된 @Singleton
으로 주석 된 제작자 클래스가 있습니다.Weld CDI : @Alternative @Singleton 사용
이 방법의 대안을 사용하여 단위 테스트를 작성하려고하지만이를 수행 할 수 없습니다. 여기 내 코드의 개요는 다음과 같습니다
package fr.easycompany.easywrite.tools.injection;
@Singleton
public class Producers {
@Produces @Named(PREFERENCES_FILE_NAMED)
public String producePreferenceFileName(){
return "preferences.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>
와 SRC/테스트/자원/META-INF에 beans.xml 환경을 만들어
package fr.easycompany.easywrite.tools.injection;
@Singleton
@Alternative
public class ProducersAlternative {
@Produces @Named(PREFERENCES_FILE_NAMED)
public String producePreferenceFileName(){
return "preferences_test.xml";
}
}
실행시 항상 호출되는 것은 Producers#producePreferenceFileName()
입니다. 왜 ProducersAlternative
님의 방법이 아닌가요? 싱글 톤 주입 클래스의 대안을 갖는 것이 불가능합니까?
나는 당신의 코드를 시험해 보았다. ProducersAlternative # producePreferenceFileName()이 예상대로 호출됩니다. –