[Building Sakai] Unit Tests

Nguni Phakela nguni52 at gmail.com
Wed Sep 18 05:24:52 PDT 2013


Hi All,

We are in the process of building an API for user management based on
course and project sites. I also wanted to do testing in the process to see
if the functionality is as expected.

I have the code below based on reading that I have done on confluence and
the test-harness source directory.

public class SiteMembersTest extends SakaiTestBase {
    private static final Log log =
LogFactory.getLog(SiteMembersTest.class.getName());
    private SiteMembers siteMembers;

    public static Test suite() {
        TestSetup setup = new TestSetup(new
TestSuite(SiteMembersTest.class)) {
            @Override
            protected void setUp() throws Exception {
                oneTimeSetup();
            }

            @Override
            protected void tearDown() throws Exception {
                oneTimeTearDown();
            }

        };
        return setup;
    }

    @Override
    public void setUp() throws Exception {
        log.info("One Time Set up: ");
        siteMembers = getService(SiteMembers.class);
    }

    public void testStudentList() {
        log.info("We will test student info in here:");
        Assert.assertNotNull(siteMembers);
        Set<String> users = siteMembers.getStudents("mysite");
    }
}

When building first, it wanted to have a folder created called endorsed
inside the common folder in tomcat. I created it manually. I'm not sure
what that is for. Now, when running the module, it seems that components
are being loaded, but then I'm seeing errors about class not found.

Sep 18, 2013 12:55:02 PM org.sakaiproject.component.impl.SpringCompMgr get
WARNING: get(org.sakaiproject.component.api.ServerConfigurationService):
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'org.sakaiproject.component.api.ServerConfigurationService'
defined in file
[/opt/apache-tomcat-7.0.41/components/sakai-kernel-component/WEB-INF/component-components.xml]:
Cannot resolve reference to bean
'org.sakaiproject.thread_local.api.ThreadLocalManager' while setting bean
property 'threadLocalManager'; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean
named 'org.sakaiproject.thread_local.api.ThreadLocalManager' is defined
at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at
org.sakaiproject.util.NoisierDefaultListableBeanFactory.getBean(NoisierDefaultListableBeanFactory.java:112)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168)
at
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:884)
at org.sakaiproject.component.impl.SpringCompMgr.get(SpringCompMgr.java:221)
at
org.sakaiproject.component.impl.SpringCompMgr.init(SpringCompMgr.java:175)
at
org.sakaiproject.component.cover.ComponentManager.getInstance(ComponentManager.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.sakaiproject.test.ComponentContainerEmulator.startComponentManager(ComponentContainerEmulator.java:90)
at
org.sakaiproject.test.ComponentContainerEmulator.startComponentManagerForTest(ComponentContainerEmulator.java:49)
at org.sakaiproject.test.SakaiTestBase.oneTimeSetup(SakaiTestBase.java:53)
at
org.wits.elearn.sakai.cmembers.SiteMembersTest$1.setUp(SiteMembersTest.java:29)
at junit.extensions.TestSetup$1.protect(TestSetup.java:18)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.extensions.TestSetup.run(TestSetup.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:96)
at
org.apache.maven.surefire.junit.JUnit3Provider.executeTestSet(JUnit3Provider.java:121)
at
org.apache.maven.surefire.junit.JUnit3Provider.invoke(JUnit3Provider.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:188)
at
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:166)
at
org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86)
at
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:101)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No bean named 'org.sakaiproject.thread_local.api.ThreadLocalManager' is
defined
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:387)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:971)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:246)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at
org.sakaiproject.util.NoisierDefaultListableBeanFactory.getBean(NoisierDefaultListableBeanFactory.java:112)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
... 44 more

Sep 18, 2013 12:55:02 PM org.sakaiproject.component.impl.SpringCompMgr init
WARNING: Configuration: Unable to get and dump out the registered server
config values because no ServerConfigurationService is available - this is
OK if this is part of a test, this is very bad otherwise
Sep 18, 2013 12:55:02 PM org.wits.elearn.sakai.cmembers.SiteMembersTest
setUp
INFO: One Time Set up:
Sep 18, 2013 12:55:02 PM org.wits.elearn.sakai.cmembers.SiteMembersTest
testStudentList
INFO: We will test student info in here:
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 2.618 sec
<<< FAILURE!
testStudentList(org.wits.elearn.sakai.cmembers.SiteMembersTest)  Time
elapsed: 0.001 sec  <<< FAILURE!
junit.framework.AssertionFailedError
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.assertTrue(Assert.java:20)
at junit.framework.Assert.assertNotNull(Assert.java:220)
at junit.framework.Assert.assertNotNull(Assert.java:213)


I would appreciate any help regarding the writing of tests in sakai.

Cheers,
--
Nguni Phakela
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20130918/b6608fca/attachment.html 


More information about the sakai-dev mailing list