Found the problem: there was no element <mapping class=nl.rivm.cda.model.Download"/> in src/test/resources/hibernate.cfg.xml. So it's clear why in the test the downloadManager failed to come up with a list of Downloads (although the root cause was hidden)

In src/main/resources/hibernate.cfg.xml, the element was there all the time. Shouldn't appfuse:gen have added it in both files?

Ger-Jan

Ger-Jan te Dorsthorst wrote:
Oops; just noticed that I deleted too many lines from the code I sent earlier. It's missing the debug lines I referred to. Here is what I meant to send:

package nl.rivm.cda.webapp.controller;

import nl.rivm.cda.model.Download;
import nl.rivm.cda.webapp.controller.BaseControllerTestCase;
import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;

public class DownloadControllerTest extends BaseControllerTestCase {

    private DownloadController controller;

    public void setDownloadController(DownloadController controller) {
        this.controller = controller;
    }

    public void testHandleRequest() throws Exception {
log.debug("controller = "+controller.getClass().getCanonicalName());
        ModelAndView mav = controller.handleRequest(null, null);
        ModelMap m = mav.getModelMap();
        List<Download> downloads = (List<Download>) m.get("downloadList");
log.debug("string repres of download list (+ size) in model map = "+downloads.toString()+" ("+downloads.size()+")");
        assertNotNull(m.get("downloadList"));
        assertTrue(((List) m.get("downloadList")).size() > 0);
    }

}

Ger-Jan te Dorsthorst wrote:
Hello Matt, list,

Matt Raible wrote:

Can you post the code for your DownloadControllerTest?

Here's the code. It is what is generated by the AF maven plugin plus a couple of added debug lines, to verify that the controller is wired correctly and that the downloadList retrieved from the modelMap is in fact empty.

package nl.rivm.cda.webapp.controller;

import nl.rivm.cda.webapp.controller.BaseControllerTestCase;
import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;

public class DownloadControllerTest extends BaseControllerTestCase {

    private DownloadController controller;

    public void setDownloadController(DownloadController controller) {
        this.controller = controller;
    }

    public void testHandleRequest() throws Exception {
        ModelAndView mav = controller.handleRequest(null, null);
        ModelMap m = mav.getModelMap();
        assertNotNull(m.get("downloadList"));
        assertTrue(((List) m.get("downloadList")).size() > 0);
    }

}

Running this with the following command:

ger...@stammetje:~/workspace/cda$ mvn clean test -Ppostgresql -Dtest=DownloadControllerTest -Dsurefire.useFile=false

Gives:

Running nl.rivm.cda.webapp.controller.DownloadControllerTest
INFO - BaseControllerTestCase.loadContextLocations(57) | Loading additional configuration from: classpath:/applicationContext-resources.xml,classpath:/applicationContext-dao.xml,classpath:/applicationContext-service.xml,classpath*:/applicationContext.xml,/WEB-INF/applicationContext*.xml,/WEB-INF/dispatcher-servlet.xml DEBUG - AbstractTransactionalSpringContextTests.startNewTransaction(392) | Began transaction (1): transaction manager [org.springframework.orm.hibernate3.hibernatetransactionmana...@1ac13d7]; rollback [true]. DEBUG - DownloadControllerTest.testHandleRequest(18) | controller = nl.rivm.cda.webapp.controller.DownloadController DEBUG - DownloadControllerTest.testHandleRequest(22) | string repres of download list (+ size) in model map = [] (0) DEBUG - AbstractTransactionalSpringContextTests.endTransaction(360) | Rolled back transaction after execution of test [testHandleRequest]. Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 2.326 sec <<< FAILURE! testHandleRequest(nl.rivm.cda.webapp.controller.DownloadControllerTest) Time elapsed: 2.306 sec <<< FAILURE!
junit.framework.AssertionFailedError: null
    at junit.framework.Assert.fail(Assert.java:47)
    at junit.framework.Assert.assertTrue(Assert.java:20)
    at junit.framework.Assert.assertTrue(Assert.java:27)
at nl.rivm.cda.webapp.controller.DownloadControllerTest.testHandleRequest(DownloadControllerTest.java:24)
[...]

 > Are you certain
there's data for your "downloads" table in sample-data.xml?

There is, and dbunit inserts it properly. If I subsequently run mvn jetty:run-war -Ppostgresql -Dmaven.test.skip=true, everything works as expected (= the downloadList inserted by the DownloadController in the ModelAndView's modelMap contains the three Downloads corresponding with the elements in sample-data.xml)


On Wed, Jun 24, 2009 at 5:18 AM, <ger...@dds.nl> wrote:
Hi,

I seem to have a problem retrieving objects from the database, but only when running a test. I added a model class 'Download' and generated CRUD using
the appfuse maven plugin. All works fine when I run with
maven.test.skip=true, but if I attempt to run with tests, or try to run the offending test in isolation (mvn test -Dtest=DownloadControllerTest), maven
bails out with a test failure.

The problem seems to be that when testing, the call to getAll() on
downloadManager (an instance of GenericManager<Download, Long>) in the
controller returns an empty List<Download>.

What could be the cause of this happening only when testing?

My DownloadController's handleRequest looks like this:

ModelAndView mav = new ModelAndView();
List<Download> downloads = downloadManager.getAll();
log.debug("in downloadcontroller's handleRequest");
log.debug("list of downloads retrieved from downloadmgr:
"+downloads.toString()+"("+downloads.size()+")");
mav.addObject("downloadList", downloads);
return mav;

When I run mvn jetty:run-war -Dmaven.skip.test=true I get this:

[cda]DEBUG [btpool0-1] DownloadController.handleRequest(32) | in
downloadcontroller's handleRequest
[cda]DEBUG [btpool0-1] DownloadController.handleRequest(33) | list of
downloads retrieved from dlmgr:
[nl.rivm.cda.model.downl...@89b953...,nl.rivm.cda.model.downl...@abab54...,nl.rivm.cda.model.downl...@7d32cf...](3)

Whereas running mvn test -Dtest=DownloadControllerTest gives:

DEBUG - DownloadController.handleRequest(32) | in downloadcontroller's
handleRequest
DEBUG - DownloadController.handleRequest(33) | list of downloads retrieved
from dlmgr: [](0)

Tia,

Ger-Jan


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
For additional commands, e-mail: users-h...@appfuse.dev.java.net



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
For additional commands, e-mail: users-h...@appfuse.dev.java.net




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
For additional commands, e-mail: users-h...@appfuse.dev.java.net




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
For additional commands, e-mail: users-h...@appfuse.dev.java.net




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
For additional commands, e-mail: users-h...@appfuse.dev.java.net

Reply via email to