hi,

you can use your own cdi-qualifier/s or you can use just one (central)
producer which has at least one parameter of type
javax.enterprise.inject.spi.InjectionPoint.
(InjectionPoint allows to get information about the target
-> you can produce dependent-scoped instances e.g. based on the target
test-class).

regards,
gerhard



2016-02-10 14:27 GMT+01:00 Karl Pietrzak <[email protected]>:

> Thanks to Java EE 7, or maybe even before it, you can inject a
> java.security.Principal
> <https://docs.oracle.com/javaee/7/tutorial/cdi-adv004.htm>.
>
> This is awesome, and I'd love to use this functionality to unit test my
> code with my own Principal's.
>
> Something like:
>
> @Dependent
>
> @RunWith(CdiTestRunner.*class*)
>
> *public* *class* AliceUnitTest {
>
>     @Produces
>
>     *public* Principal customPrincipal() {
>
>         *return* *new* CustomPrincipal("[email protected]");
>
>     }
>
>     @Inject
>
>     Principal principal;
>
>
>     @Test
>
>     *public* *void* injection() {
>
>         *assertThat*(principal.getName(), *is*("[email protected]"));
>
>     }
>
> @Dependent
>
> @RunWith(CdiTestRunner.*class*)
>
> *public* *class* BobUnitTest {
>
>     @Produces
>
>     *public* Principal customPrincipal() {
>
>         *return* *new* CustomPrincipal("[email protected]");
>
>     }
>
>
>     @Inject
>
>     Principal principal;
>
>
>     @Test
>
>     *public* *void* injection() {
>
>         *assertThat*(principal.getName(), *is*("[email protected]"));
>
>     }
>
>
> }
>
>
> This results in "WELD-001409: Ambiguous dependencies for type Principal
> with qualifiers @Default" and "WELD-001318: Cannot resolve an ambiguous
> dependency between: ".
>
> I think I tried every different scope and bean-discovery-mode.  Is this
> supported at all?
>
> Code available at
>
> https://github.com/The-Alchemist/javaeetesting/tree/testing-different-principals/deltaspike
>
> Any tips would be greatly appreciated. :)
>
> --
> Karl
>

Reply via email to