hi stephen, if your tests require that even the application-scope needs to be restarted, please have a look at [1]. however, i'm not sure if the constellation you have can benefit from it (since the idea of @TestControl is to test the application with one test-config and not different ones). if it doesn't work the way you need it, you might need to introduce different test-modules (one module per test config/setup). (+ please have a look at [2], if you have issues with mocking the faces-context.)
#1 means that you need to try: @RunWith(CdiTestRunner.class) @TestControl(startScopes = {ApplicationScoped.class, SessionScoped.class, RequestScoped.class}) regards, gerhard [1] http://deltaspike.apache.org/documentation/test-control.html#TestCustomization [2] http://deltaspike.apache.org/documentation/test-control.html#JSF(viaMyFaces-Test) 2017-03-20 1:13 GMT+01:00 Stephen More <stephen.m...@gmail.com>: > For giggles, I cloned deltaspike 1.7.3-SNAPSHOT and added some debug info > to > deltaspike/modules/jsf/api/src/main/java/org/apache/ > deltaspike/jsf/api/config/JsfModuleConfig.java > > protected synchronized void init() > { > if (this.initialized == null) > { > System.out.println( "initialized is null" ); > this.jsf22Available = > ClassUtils.tryToLoadClassForName(CLIENT_WINDOW_CLASS_NAME) != null; > > if (!this.jsf22Available) > { > this.delegatedWindowHandlingEnabled = false; > } > else > { > FacesContext facesContext = > FacesContext.getCurrentInstance(); > > // can happen in case of a very simple test-setup without a > mocked jsf container > if (facesContext == null) > { > System.out.println( "facesContext is null" ); > this.delegatedWindowHandlingEnabled = false; > } > else > { > System.out.println( "facesContext: " + facesContext ); > System.out.println( "ectx: " + > facesContext.getExternalContext() ); > System.out.println( "CLIENT_WINDOW_CONFIG_KEY: " + > CLIENT_WINDOW_CONFIG_KEY ); > String initParam = > facesContext.getExternalContext().getInitParameter(CLIENT_ > WINDOW_CONFIG_KEY); > this.delegatedWindowHandlingEnabled = > !(initParam == null || > "none".equalsIgnoreCase(initParam.trim())); > } > } > > this.initialized = true; > } > } > > > the first set of tests that passes 'mvn clean test' just fine outputs: > initialized is null > facesContext is null > > but when I run all the test 'mvn clean test' outputs: > initialized is null > facesContext: Mock for FacesContext, hashCode: 1278864070 > ectx: null > CLIENT_WINDOW_CONFIG_KEY: javax.faces.CLIENT_WINDOW_MODE > > > The first problem is that my mocked FacesContext does not provide for > getExternalContext()....but there is no good error message to that fact. > > The second problem: it appears these tests not running as isolated as I > thought, because my ContextMocker is being used in a test that it is not > configured to utilize. Is this a problem with the way I have > written/configured my tests, or is something else leaking data from one > test to another ? > > > > > > > On Sat, Mar 18, 2017 at 6:27 PM, Gerhard Petracek <gpetra...@apache.org> > wrote: > > > hi stephen, > > > > it looks more like an issue in weld. > > ds just provides a "simple" test-runner which starts the cdi-container of > > your choice as well as some scopes,... > > (the rest is up to the cdi-container you are using.) > > > > regards, > > gerhard > > > > > > > > 2017-03-16 21:14 GMT+01:00 Stephen More <stephen.m...@gmail.com>: > > > > > Here is some additional info: > > > weld: 2.4.2.Final > > > deltaspike: 1.7.2 > > > > > > Why does everything magically work with 3 threads ???? > > > > > > with maven-surefire-plugin forkCount == 3 - Tests run: 52, Failures: 0, > > > Errors: 0, Skipped: 0 > > > with maven-surefire-plugin forkCount == 1, 2, 4, 5: Tests run: 52, > > > Failures: 0, Errors: 2, Skipped: 0 > > > > > > org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke > > > protected void > > > org.apache.deltaspike.jsf.impl.scope.window. > > JsfWindowContextQuotaHandler. > > > init() > > > on > > > org.apache.deltaspike.jsf.impl.scope.window. > > JsfWindowContextQuotaHandler@ > > > fd5c7f6 > > > at > > > org.apache.deltaspike.jsf.api.config.JsfModuleConfig.init( > > > JsfModuleConfig.java:179) > > > at > > > org.apache.deltaspike.jsf.api.config.JsfModuleConfig. > > > lazyInit(JsfModuleConfig.java:153) > > > at > > > org.apache.deltaspike.jsf.api.config.JsfModuleConfig. > > getDefaultWindowMode( > > > JsfModuleConfig.java:116) > > > at > > > org.apache.deltaspike.jsf.api.config.JsfModuleConfig$Proxy$_ > > > $$_WeldClientProxy.getDefaultWindowMode(Unknown > > > Source) > > > at > > > org.apache.deltaspike.jsf.spi.scope.window.DefaultClientWindowConfig. > > init( > > > DefaultClientWindowConfig.java:78) > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke( > > NativeMethodAccessorImpl.java: > > > 62) > > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke( > > > DelegatingMethodAccessorImpl.java:43) > > > at java.lang.reflect.Method.invoke(Method.java:497) > > > at > > > org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoke > > > r.invokeMethods(DefaultLifecycleCallbackInvoker.java:97) > > > at > > > org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoke > > > r.postConstruct(DefaultLifecycleCallbackInvoker.java:80) > > > at > > > org.jboss.weld.injection.producer.BasicInjectionTarget.postConstruct( > > > BasicInjectionTarget.java:122) > > > at org.jboss.weld.bean.ManagedBean.create( > ManagedBean.java:162) > > > at > > > org.jboss.weld.util.bean.IsolatedForwardingBean.create( > > > IsolatedForwardingBean.java:45) > > > at > > > org.jboss.weld.context.AbstractContext.get(AbstractContext.java:96) > > > at > > > org.jboss.weld.context.PassivatingContextWrapper$ > > > AbstractPassivatingContextWrapper.get(PassivatingContextWrapper. > java:76) > > > at > > > org.jboss.weld.bean.ContextualInstanceStrategy$ > > > DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy. > > java:100) > > > at > > > org.jboss.weld.bean.ContextualInstanceStrategy$ > > > CachingContextualInstanceStrategy.get(ContextualInstanceStrategy. > > java:177) > > > at > > > org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50) > > > at > > > org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance( > > > ContextBeanInstance.java:99) > > > at > > > org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance( > > > ProxyMethodHandler.java:125) > > > at > > > org.apache.deltaspike.jsf.spi.scope.window.DefaultClientWindowConfig$ > > > Proxy$_$$_WeldClientProxy.getMaxWindowContextCount(Unknown > > > Source) > > > at > > > org.apache.deltaspike.jsf.impl.scope.window. > > JsfWindowContextQuotaHandler. > > > init(JsfWindowContextQuotaHandler.java:38) > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke( > > NativeMethodAccessorImpl.java: > > > 62) > > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke( > > > DelegatingMethodAccessorImpl.java:43) > > > at java.lang.reflect.Method.invoke(Method.java:497) > > > at > > > org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoke > > > r.invokeMethods(DefaultLifecycleCallbackInvoker.java:97) > > > at > > > org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoke > > > r.postConstruct(DefaultLifecycleCallbackInvoker.java:80) > > > at > > > org.jboss.weld.injection.producer.BasicInjectionTarget.postConstruct( > > > BasicInjectionTarget.java:122) > > > at org.jboss.weld.bean.ManagedBean.create( > ManagedBean.java:162) > > > at > > > org.jboss.weld.util.bean.IsolatedForwardingBean.create( > > > IsolatedForwardingBean.java:45) > > > at > > > org.jboss.weld.context.AbstractContext.get(AbstractContext.java:96) > > > at > > > org.jboss.weld.context.PassivatingContextWrapper$ > > > AbstractPassivatingContextWrapper.get(PassivatingContextWrapper. > java:76) > > > at > > > org.jboss.weld.bean.ContextualInstanceStrategy$ > > > DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy. > > java:100) > > > at > > > org.jboss.weld.bean.ContextualInstanceStrategy$ > > > CachingContextualInstanceStrategy.get(ContextualInstanceStrategy. > > java:177) > > > at > > > org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50) > > > at > > > org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance( > > > ContextBeanInstance.java:99) > > > at > > > org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance( > > > ProxyMethodHandler.java:125) > > > at > > > org.apache.deltaspike.jsf.impl.scope.window. > > JsfWindowContextQuotaHandler$ > > > Proxy$_$$_WeldClientProxy.checkWindowContextQuota(Unknown > > > Source) > > > at > > > org.apache.deltaspike.core.impl.scope.window.WindowBeanHolder. > > > getContextualStorage(WindowBeanHolder.java:64) > > > at > > > org.apache.deltaspike.core.impl.scope.window. > WindowBeanHolder$Proxy$_$$_ > > > WeldClientProxy.getContextualStorage(Unknown > > > Source) > > > at > > > org.apache.deltaspike.core.impl.scope.window.WindowContextImpl. > > > getContextualStorage(WindowContextImpl.java:119) > > > at > > > org.apache.deltaspike.core.util.context.AbstractContext. > > > get(AbstractContext.java:78) > > > at > > > org.jboss.weld.context.PassivatingContextWrapper$ > > > AbstractPassivatingContextWrapper.get(PassivatingContextWrapper. > java:70) > > > at > > > org.jboss.weld.bean.ContextualInstanceStrategy$ > > > DefaultContextualInstanceStrategy.getIfExists( > > ContextualInstanceStrategy. > > > java:89) > > > at > > > org.jboss.weld.bean.ContextualInstance.getIfExists( > > > ContextualInstance.java:63) > > > at > > > org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance( > > > ContextBeanInstance.java:83) > > > at > > > org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance( > > > ProxyMethodHandler.java:125) > > > > > > > > > Should I file a bug report for this issue ? > > > > > > > > > On Thu, Mar 16, 2017 at 3:20 PM, Stephen More <stephen.m...@gmail.com> > > > wrote: > > > > > > > I am running into a strange problem.... > > > > > > > > I have 1 set of CdiTestRunner classes that passes 'mvn clean test' > just > > > > fine. > > > > I have another set of CdiTestRunner class that passes 'mvn clean > test' > > > > just fine. > > > > > > > > But when I try to run all CdiTestRunner classes at once I get: > > > > org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to > invoke > > > > protected void org.apache.deltaspike.jsf.impl.scope.window. > > > > JsfWindowContextQuotaHandler.init() on org.apache.deltaspike.jsf. > > > > impl.scope.window.JsfWindowContextQuotaHandler@65ff1e6d > > > > > > > > > >