Some tests in uPortal 3 that use classes from javax.servlet.* in their runtime environment need to be running within a servlet container.
Package org.jasig.portal.servlet in tests directory contains the following basic classes extending JUnit test functionality:
Test Servlet
This servlet performs HTTP tests using Reflection API and sends reports to the HTTP test runner which is a standalone Java application.
It uses the Spring config file to register HTTP test beans. uPortal 3 registers this servlet and its mappings in the web.xml.
<servlet> <servlet-name>TestServlet</servlet-name> <display-name>Test servlet</display-name> <servlet-class>org.jasig.portal.servlet.TestServlet</servlet-class> <init-param> <param-name>contextFileName</param-name> <param-value>test_servlet_beans.xml</param-value> </init-param> </servlet> ... <!-- uPortal test services --> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/TestServlet/*</url-pattern> </servlet-mapping>
Where contextFileName is the URI to the beans Spring configuration file.
In the example above test beans are defined in the file test_servlet_beans.xml located in the same package:
<beans default-lazy-init="true"> <bean id="containerTest" class="org.jasig.portal.portlet.container.HttpContainerTestBean" singleton="true"> </bean> <bean id="portletUrlTest" class="org.jasig.portal.portlet.url.PortletUrlTest" singleton="true"> </bean> <bean id="wsrpContainerTest" class="org.jasig.portal.wsrp.WsrpPortletContainerHttpTestBean" singleton="true"> </bean> </beans>
HTTP Test Runner
It works as a standalone socket server accepting TCP/IP connections from the test servlet and shows results of tests running by that servlet.
Connects to the test servlet to execute HTTP tests specified by the parameters:
- bean - defines the name of the test bean
- method - defines the name of the test method to be executed
- connect - if true the test servlet will send the report to the HTTP test runner
The httptestrunner.properties sets the port number of the socket server and the test servlet URL.# The test runner properties port = 10999 servletUrl = http://localhost:8080/uP3/TestServlet contextXmlFile = test_servlet_beans.xml
HttpTestCase class
It is an extension of JUnit's TestCase with its own initTest() method to initialize a test bean with ServletConfig, HttpServletRequest and HttpServletResponse. Accepts all assertions supported by JUnit. Subclasses need to be registered within the Spring config file of the test servlet.