hi allen,

the zip-file you provided contains a bit more.
however, if i use the parts you described in your mail (with [1]),
everything works as expected.

regards,
gerhard

[1] https://github.com/os890/javase-cdi-ds-project-template



http://www.irian.at

Your JavaEE powerhouse -
JavaEE Consulting, Development and
Courses in English and German

Professional Support for Apache
MyFaces, DeltaSpike and OpenWebBeans



2014-12-05 21:25 GMT+01:00 Allen Cunningham <[email protected]>:

> I'm having trouble with the ProjectStage in Test-Control. My tests run with
> ProjectStage.Production instead of UnitTest.
>
> I put together a simple project to demonstrate my problem:
>
> Test class:
>
> @RunWith(CdiTestRunner.class)
> @TestControl(startScopes = ApplicationScoped.class)
> public class UnitTest {
>   @Inject SampleClient sampleClient;
>
>   @Test
>   @TestControl(projectStage = ProjectStage.UnitTest.class)
>   public void go() {
>     sampleClient.init(new StartupEvent());
>   }
> }
>
> SampleClient:
>
> @ApplicationScoped
> public class SampleClient {
>   @Inject SampleAPI sampleAPI;
>
>   public void init(@Observes @Any StartupEvent event) {
>     System.out.println(sampleAPI.doSomething());
>   }
> }
>
> The API:
>
> public interface SampleAPI {
>   public String doSomething();
> }
>
> The production implementation:
>
> @ApplicationScoped
> @Exclude(ifProjectStage = ProjectStage.UnitTest.class)
> public class SampleImpl implements SampleAPI {
>
>   @Override
>   public String doSomething() {
>     return "Greetings from Impl";
>   }
> }
>
> And finally the mock bean:
>
> @ApplicationScoped
> @Exclude(exceptIfProjectStage = ProjectStage.UnitTest.class)
> public class SampleMock implements SampleAPI {
>
>   @Override
>   public String doSomething() {
>     return "Greetings from Mock";
>   }
> }
>
> When I launch the app using CdiContainer, it loads the mock bean correctly,
> but when I launch it using CdiTestRunner it loads SampleImpl.
>
> Single stepping through OWB I see that the DeltaSpike ProjectStageProducer
> sees projectStage == null and sets it to Production by default.
>
> Am I missing something in my test config?
>
> I put a zip of the project here:
> https://www.dropbox.com/s/vg76rdapsl4yps9/ProjectStage.zip?dl=0
> Sorry it isn't Maven!
> "ant" will launch it normally and "ant test" will run the unit test.
>
> Thanks!
> Allen
>

Reply via email to