You need a new version of org.apache.tapestry5.test.PageTester which creates the SpringContext itself.

package mypackage.test;

import org.apache.tapestry5.test.PageTester;
import org.apache.tapestry5.internal.spring.SpringModuleDef;
import org.apache.tapestry5.ioc.def.ModuleDef;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class PageTesterSpring extends PageTester {

    public PageTesterSpring(String appPackage, String appName) {
        super(appPackage, appName);
    }

    public PageTesterSpring(String appPackage, String appName, String contextPath, Class... moduleClasses){
        super(appPackage, appName, contextPath, moduleClasses);
    }

    protected ModuleDef[] provideExtraModuleDefs() {
        ApplicationContext springContext = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
        return new ModuleDef[]{ new SpringModuleDef(springContext) };
    }
}

Then you can use your PageTesterSpring just like the PageTester:

package mypackage.test.frontend.pages;

import org.apache.tapestry5.dom.Document;
import mypackage.PageTesterSpring;
import org.testng.Assert;
import org.testng.annotations.Test;

public class Index extends Assert {

    @Test
    public void test1() {	
        String appPackage = "mypackage.frontend";
        String appName = "app";
        PageTesterSpring tester = new PageTesterSpring(appPackage, appName, "WebContent");

        Document doc = tester.renderPage("Index");
        assertEquals(doc.getElementById("id1").getChildMarkup(), "hello");
    }
}
  • No labels