DepartmentServiceTest failure in "Hello World" module

I’m trying to build a new module after following the “first module” instructions found here: http://en.flossmanuals.net/openmrs-developers-guide/hello-world-module/

However, the DepartmentServiceTest is failing, and I can’t figure out why. I’m hoping someone could take a look at the error printout and point me in the right direction. Thanks in advance! I’m fairly new to OpenMRS, but am excited to start contributing to the project!

Here is the error message:

Test set: org.openmrs.module.basicexample.api.DepartmentServiceTest

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 7.968 sec <<< FAILURE!
shouldSetupContext(org.openmrs.module.basicexample.api.DepartmentServiceTest)  Time elapsed: 7.488 sec  <<< ERROR!
java.lang.IllegalStateException: Failed to load ApplicationContext
	at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:308)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:220)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:301)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:303)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
	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.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serviceContext$child#1' defined in URL [file:/Users/rob_cardy_31/GitHub/FirstModule/basicexample/api/target/classes/moduleApplicationContext.xml]: Cannot create inner bean 'org.springframework.transaction.interceptor.TransactionProxyFactoryBean#560513ce' of type [org.springframework.transaction.interceptor.TransactionProxyFactoryBean] while setting bean property 'moduleService' with key [1]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.interceptor.TransactionProxyFactoryBean#560513ce' defined in URL [file:/Users/rob_cardy_31/GitHub/FirstModule/basicexample/api/target/classes/moduleApplicationContext.xml]: Cannot create inner bean 'org.openmrs.module.Department.api.impl.DepartmentServiceImpl#41beb473' of type [org.openmrs.module.Department.api.impl.DepartmentServiceImpl] while setting bean property 'target'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.openmrs.module.Department.api.impl.DepartmentServiceImpl] for bean with name 'org.openmrs.module.Department.api.impl.DepartmentServiceImpl#41beb473' defined in URL [file:/Users/rob_cardy_31/GitHub/FirstModule/basicexample/api/target/classes/moduleApplicationContext.xml]; nested exception is java.lang.ClassNotFoundException: org.openmrs.module.Department.api.impl.DepartmentServiceImpl
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:281)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:120)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:153)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:84)
	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1)
	at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:280)
	at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:304)
	... 31 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.interceptor.TransactionProxyFactoryBean#560513ce' defined in URL [file:/Users/rob_cardy_31/GitHub/FirstModule/basicexample/api/target/classes/moduleApplicationContext.xml]: Cannot create inner bean 'org.openmrs.module.Department.api.impl.DepartmentServiceImpl#41beb473' of type [org.openmrs.module.Department.api.impl.DepartmentServiceImpl] while setting bean property 'target'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.openmrs.module.Department.api.impl.DepartmentServiceImpl] for bean with name 'org.openmrs.module.Department.api.impl.DepartmentServiceImpl#41beb473' defined in URL [file:/Users/rob_cardy_31/GitHub/FirstModule/basicexample/api/target/classes/moduleApplicationContext.xml]; nested exception is java.lang.ClassNotFoundException: org.openmrs.module.Department.api.impl.DepartmentServiceImpl
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:281)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:120)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:270)
	... 49 more
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.openmrs.module.Department.api.impl.DepartmentServiceImpl] for bean with name 'org.openmrs.module.Department.api.impl.DepartmentServiceImpl#41beb473' defined in URL [file:/Users/rob_cardy_31/GitHub/FirstModule/basicexample/api/target/classes/moduleApplicationContext.xml]; nested exception is java.lang.ClassNotFoundException: org.openmrs.module.Department.api.impl.DepartmentServiceImpl
	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1250)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:433)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:270)
	... 55 more
Caused by: java.lang.ClassNotFoundException: org.openmrs.module.Department.api.impl.DepartmentServiceImpl
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at org.openmrs.util.OpenmrsClassLoader.loadClass(OpenmrsClassLoader.java:160)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at org.springframework.util.ClassUtils.forName(ClassUtils.java:257)
	at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:408)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1271)
	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1242)
	... 57 more

In your moduleApplicationContext.xml, can you try change capital D to small d in the package name for class? org.openmrs.module.Department.api.impl.DepartmentServiceImpl

Hi Daniel,

I redid my code and realized I was just making a few silly mistakes with class names. It is all resolved now. Thank you for your time!