Problems with taglibs in JSFUnit
sai001 Jun 13, 2007 5:15 AMHi, I'm a developer that's currently using JSFUnit for JSF testing purposes.
I've downloaded and tested your example (hellojsf-jsfunit) without any problems UNTIL I added personalised tags, including of course their definition in the header of the jsp file as follows:
<%@ taglib uri="/WEB-INF/Blv.tld" prefix="componentes"%>
<%@ taglib uri="jsf-jup-comp" prefix="Componentes-jupiter"%>
The problem is, I can't only have access to the elements that are declared with my own "propietary" tags like this:
<componentes:Blv value="#{enged1id.codusu}" maxLength="6"
denominacion="#{enged1id.codusu}"
id="codusu"
..../>
but when these are added, I can't even access the elements I used before without any problems! I mean, those that were declared in the average <h:...> tags!!!
For example, the jsp file I'm using has an inputText tag named "ejerta":
<h:inputText id="ejerta" value="#{enged1id.ejerta}" size="6" styleClass="camponormal" maxlength="4">
</h:inputText>
When testing a very simple variant of this jsp file I have no problems,
client.setParameter("ejerta","2010");works OK and the test succeeds, but when I add other tags different than <h:...> and <f:...>, JSFUnit doesn't recognize the form that has been declared in the jsp page, and client.setParameter(...) fails. I get a NullPointerException (see the trace below)
java.lang.NullPointerException
at org.jboss.jsfunit.facade.ClientFacade.setParameter(ClientFacade.java:176)
at pruebas.testJSF.testInput(testJSF.java:111)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at org.apache.cactus.internal.AbstractCactusTestCase.runBareServer(AbstractCactusTestCase.java:153)
at org.apache.cactus.internal.server.AbstractWebTestCaller.doTest(AbstractWebTestCaller.java:119)
at org.apache.cactus.internal.server.AbstractWebTestController.handleRequest_aroundBody0(AbstractWebTestController.java:93)
at org.apache.cactus.internal.server.AbstractWebTestController.handleRequest_aroundBody1$advice(AbstractWebTestController.java:217)
at org.apache.cactus.internal.server.AbstractWebTestController.handleRequest(AbstractWebTestController.java)
at org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody2(ServletTestRedirector.java:101)
at org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody3$advice(ServletTestRedirector.java:217)
at org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedirector.java)
at org.jboss.jsfunit.framework.JSFUnitCactusRedirector.doPost(JSFUnitCactusRedirector.java:67)
at org.jboss.jsfunit.framework.JSFUnitCactusRedirector.doGet(JSFUnitCactusRedirector.java:78)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:846)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:397)
at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:866)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:451)
at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:218)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:119)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:245)
at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:231)
at oracle.oc4j.network.ServerSocketAcceptHandler.access$1000(ServerSocketAcceptHandler.java:33)
at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:820)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:595)
And the big question is:
Is JSFUnit unable to handle other tags different than
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> and
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>??
I hope not!
Thanks a lot in advance for your replies and thanks also for sharing this neat piece of testing sotware with the rest of the world.
Cheers.