package org.jglue.cdiunit; import org.testng.Assert; import org.testng.annotations.Test; import javax.enterprise.inject.Produces; import javax.inject.Inject; import javax.inject.Named; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; @AdditionalClasses(TestNgProducerConfig.Producers.class) public class TestNgProducerConfig extends NgCdiRunner { @Inject @Named("a") private String valueNamedA; // an example ProducerConfig annotation @Retention(RUNTIME) @Target(METHOD) @ProducerConfig public @interface ProducerConfigNum { int value(); } // Producers kept out of the injected test class to avoid Weld circularity warnings: static class Producers { @Produces @Named("a") private String getValueA(ProducerConfigNum config) { return "A" + config.value(); } } @Test @ProducerConfigNum(1) public void testA1() { Assert.assertEquals("A1", valueNamedA); } @Test @ProducerConfigNum(2) public void testA2() { Assert.assertEquals("A2", valueNamedA); } }