Даже если это уже принято, я отправлю вам решение, которое я нашел. У меня была та же проблема, и использование @Specializes не было для меня вариантом, потому что у меня было много макетов с несколькими методами, поэтому создание для каждого класса было немного излишним ....
Итак, в моем тесте у меня есть ResourceMock:
@Produces
@Alternative
public IResource createResource() {
Resource resource = mock(Resource.class);
when(resource.getLocalized(anyString())).then(AdditionalAnswers.returnsFirstArg());
return resource;
}
С помощью следующего ShrinkWrap я смог загрузить эти bean-компоненты @Alternative только во время теста: (в каталоге dir не требуется beans.xml!)
return ShrinkWrap
.create(JavaArchive.class)
.addPackages(true, "some.package.with.classes")
.addAsManifestResource(
new StringAsset(
"<alternatives><class>my.testclass.with.alternatives</class></alternatives>"),
"beans.xml");
И это все.