I think that page parameters do not work in integration tests.
I have the following test:
ItemTest.java
public class ItemTest extends SeamTest { @Test public void testRequestParameterAnnotation() throws Exception { new NonFacesRequest("/item.xhtml") { @Override protected void beforeRequest() { setParameter("itemId", "1"); } @Override protected void renderResponse() throws Exception { checkItemRetrieval(getValue("#{itemHome}")); } }.run(); } @Test public void testPageParameter() throws Exception { new NonFacesRequest("/item.xhtml") { @Override protected void beforeRequest() { setParameter("id", "1"); } @Override protected void renderResponse() throws Exception { checkItemRetrieval(getValue("#{itemHome}")); } }.run(); } private void checkItemRetrieval(Object object) { ItemHome itemHome = (ItemHome) object; assert itemHome.getInstance().getId() != null; } }
@Name("itemHome") public class ItemHome extends EntityHome<Item> { @RequestParameter Long itemId; @Override public Object getId() { if (itemId==null) { return super.getId(); } else { return itemId; } } }
<page view-id="/item.xhtml"> <param name="id" value="#{itemHome.id}" converterId="javax.faces.Long"/> </page>
Also, for anyone looking for a workaround like I was, this works:
@Override protected void beforeRequest() { FacesContext.getCurrentInstance().renderResponse(); setParameter("id", "1"); }