I'm confused about JSFUnit and maven.
pucky Oct 16, 2009 9:17 PMHi all,
I have a seam application that I'd like to do some JSFUnit against and I've come across some issues.
First my application is distributed so I know that there was an issue with serializing the jsfsession. The error I was getting is below:
java.lang.IllegalArgumentException: setAttribute: Non-serializable attribute
So I turned off distributed and it worked.
So I've got JSFUnit configured within my war which is deployed as part of an ear.
Should I just create a unittest.war and deploy it within my ear and then test it that way?
I've tried to do the above but my unittest.war can't access the pages of the main app.
=======ear layout=======
ear/
/META-INF/...
/ejb.jar
/mywebap.war <--root context /
/unittest.war <-- root context /unittest
====================
Step 4 of http://www.jboss.org/community/wiki/JSFUnitWithMaven is the part that is confusing me.
How am I suppose to configure my unittest.war to access my .seam files in the mywebapp.war?
here's my test JSFUnit maybe the issue is here:
======Basic Test=======
import org.apache.cactus.ServletTestCase;
import org.jboss.jsfunit.jsfsession.JSFSession;
import org.jboss.jsfunit.jsfsession.*;
import org.jboss.jsfunit.framework.WebClientSpec;
import org.jboss.jsfunit.richclient.RichFacesClient;
import junit.framework.*;
import java.io.IOException;
public class BasicTest extends ServletTestCase {
private JSFSession jsfSession;
private JSFClientSession client;
private RichFacesClient richClient;
private JSFServerSession server;
public void setUp() throws IOException
{
WebClientSpec wcSpec = new WebClientSpec("/login.seam");
this.jsfSession = new JSFSession(wcSpec);
this.client = jsfSession.getJSFClientSession();
this.richClient = new RichFacesClient(client);
this.server = jsfSession.getJSFServerSession();
}
public static Test suite() {
return new TestSuite(BasicTest.class);
}
public void testInitialPage() throws Exception {
assertEquals("/login.xhtml",server.getCurrentViewID().toString());
}
public void testLoginPageAdmin() throws Exception
{
assertEquals("/login.xhtml",server.getCurrentViewID().toString());
client.setValue("login:username","username");
client.setValue("login:password","password");
client.click("loginBtn");
assert(((Boolean)server.getManagedBeanValue("#{identity.loggedIn}")).booleanValue());
}
public void testLogoutAdmin() throws Exception
{
assert(((Boolean)server.getManagedBeanValue("#{identity.loggedIn}")).booleanValue());
client.click("logoutBtn");
assertFalse(((Boolean)server.getManagedBeanValue("#{identity.loggedIn}")).booleanValue());
}
}
====================
So mainly what I'm trying to do is keep my application distributed but have the unittest.war not distributed so that I can get past the Serialization error. Will this work? Am I way off course here, I pretty much feel that way.
Thanks
Pucky