| 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjunit.framework.Assert
junit.framework.TestCase
com.jalios.jcms.test.JcmsTestCase
public abstract class JcmsTestCase
Provides a super class for development of JCMS unit tests.
 Extending this class will automatically provides a working JCMS
 during execution of all your unit tests.
 
 
The launched instance of JCMS will be using the following 3 files :
WEB-INF/data/store.xml.junit : copy of WEB-INF/data/store.xml.release if it exists, otherwise copy of WEB-INF/data/store.xmlWEB-INF/data/custom.prop.junit : copy of WEB-INF/data/custom.prop.release if it exists, otherwise copy of WEB-INF/data/custom.propWEB-INF/data/webapp.prop.junit : copy of WEB-INF/data/webapp.prop.release if it exists, otherwise copy of WEB-INF/data/webapp.prop
 Also, if file WEB-INF/data/junit.prop exists, its content is appended to
 the junit file WEB-INF/data/custom.prop.junit.
 
 Warning!: Even though, store.xml, custom.prop and 
 webapp.prop are not modified by launching a test case using this class,
 beware that a real JCMS is being launched, thus some other legitimate file might
 be modified (monitor.xml, logs, stats, lucene index, etc).
 
 
Some useful protected variables are provided to your subclass for easier Data manipulation in your test cases :
admin : default administrator (channel.getDefaultAdmin())defaultWorkspace : default workspace (channel.getDefaultWorkspace())defaultGroup : default group (channel.getDefaultGroup())"unittests.", the log message
 will be appendended to standard console.
 
 Example :
  public class MyFeatureTest extends com.jalios.jcms.test.JcmsTestCase {
    private static final Logger logger = Logger.getLogger(MyFeatureTest.class.getName());
    
    Data testData = null; 
    
    protected void setUp() throws Exception {
      super.setUp();
      
      logger.info("Creating new article for MyFeature test...");
      Article article = new Article();
      article.setWorkspace(defaultWorkspace);
      article.setTitle("en", "Article Title en " + new Date());
      article.performCreate(admin); 
      testData = article
    }
  
    public void testMethod1() {
      HttpSession testSession = getMockHttpSession();
      assertTrue(MyFeature.method1(getMockHttpServletRequest(testSession), testData));
      assertFalse(MyFeature.method1(getMockHttpServletRequest(testSession), testData));
      ...
    }
    
    protected void tearDown() throws Exception {
      super.tearDown();
      
      if (testData != null) {
        logger.info("Deleting article created for MyFeature test...");
        testData.performDelete(admin); 
      }
    }
  }
 
| Field Summary | |
|---|---|
protected static String | 
A_VERY_LONG_TEXT
 | 
protected static Member | 
admin
 | 
protected static Channel | 
channel
Singleton used for testing  | 
protected static Group | 
defaultGroup
 | 
protected static Workspace | 
defaultWorkspace
 | 
protected static FriendlyURLFilter | 
friendlyURLFilter
Instance of the FriendlyURLFilter being used for testing  | 
protected static String[] | 
langs
Array of all channel languages ( channel.getLanguageList()) | 
| Fields inherited from interface com.jalios.util.JaliosConstants | 
|---|
CRLF, MILLIS_IN_ONE_DAY, MILLIS_IN_ONE_HOUR, MILLIS_IN_ONE_MINUTE, MILLIS_IN_ONE_MONTH, MILLIS_IN_ONE_SECOND, MILLIS_IN_ONE_WEEK, MILLIS_IN_ONE_YEAR | 
| Constructor Summary | |
|---|---|
JcmsTestCase()
 | 
|
| Method Summary | ||
|---|---|---|
protected 
 | 
assertCmpEquals(Comparator<T> comparator,
                T o1,
                T o2)
 | 
|
protected 
 | 
assertCmpGreater(Comparator<T> comparator,
                 T o1,
                 T o2)
 | 
|
protected 
 | 
assertCmpLower(Comparator<T> comparator,
               T o1,
               T o2)
 | 
|
protected 
 | 
assertCmpOpposite(Comparator<T> comparator,
                  T o1,
                  T o2)
 | 
|
protected 
 | 
assertCmpSame(Comparator<T> c1,
              Comparator<T> c2,
              T o1,
              T o2)
 | 
|
protected  void | 
assertDateRange(Date date,
                Date lowerDate,
                Date upperDate)
Assert the given date d1 is in range {d2, d3}  | 
|
protected  void | 
assertDateRangeStrict(Date date,
                      Date lowerDate,
                      Date upperDate)
Assert the given date date is in the range {lowerDate, upperDate}  | 
|
protected  void | 
assertIsEmpty(Object obj)
 | 
|
protected  void | 
assertNotEmpty(Object obj)
 | 
|
protected  void | 
assertNotSameContent(Date date1,
                     Date date2)
 | 
|
protected  void | 
assertNotSameContent(List<?> list1,
                     List<?> list2)
 | 
|
protected  void | 
assertNotSameContent(Map<?,?> map1,
                     Map<?,?> map2)
 | 
|
protected  void | 
assertNotSameContent(Object[] array1,
                     Object[] array2)
 | 
|
protected  void | 
assertNotSameContent(Set<?> set1,
                     Set<?> set2)
 | 
|
static void | 
assertObjectIsGarbageCollected(WeakReference<? extends Object> wRef,
                               long timeout)
Check that the specified Object (referenced through a WeakReference) is garbage collected in the designated time.  | 
|
protected  void | 
assertSameContent(Date date1,
                  Date date2)
 | 
|
protected  void | 
assertSameContent(List<?> list1,
                  List<?> list2)
 | 
|
protected  void | 
assertSameContent(Map<?,?> map1,
                  Map<?,?> map2)
 | 
|
protected  void | 
assertSameContent(Object[] array1,
                  Object[] array2)
 | 
|
protected  void | 
assertSameContent(Set<?> set1,
                  Set<?> set2)
 | 
|
protected  void | 
assertStatusForbidden(ControllerStatus status)
 | 
|
protected  void | 
assertStatusHasFailed(ControllerStatus status)
 | 
|
protected  void | 
assertStatusOK(ControllerStatus status)
 | 
|
protected  void | 
beginTransaction()
 | 
|
protected  void | 
commitTransaction()
 | 
|
protected  void | 
deleteData(Data... array)
 | 
|
protected  void | 
deleteData(String... ids)
 | 
|
protected  void | 
deleteOnTearDown(Data data)
 | 
|
protected  Object | 
deserialize(File file)
Deserialize the given file into a new object which is returned.  | 
|
protected  javax.servlet.http.HttpServletRequest | 
getMockHttpServletRequest()
Convenient Method to return a new instance of a fake http servlet request.  | 
|
protected  javax.servlet.http.HttpServletRequest | 
getMockHttpServletRequest(javax.servlet.http.HttpSession session)
Convenient Method to return a new instance of a fake http servlet request using the specified mock session  | 
|
protected  javax.servlet.http.HttpSession | 
getMockHttpSession()
Convenient Method to return a new instance of a fake http session.  | 
|
protected  JcmsJspContext | 
getMockJcmsJspContext()
Retrieve a mock explorer JcmsJspContext.  | 
|
protected  JcmsJspContext | 
getMockJcmsJspContext(javax.servlet.http.HttpServletRequest request)
Retrieve a mock explorer JcmsJspContext based on the specified request  | 
|
protected  javax.servlet.ServletContext | 
getMockServletContext()
Convenient Method to return the fake servlet context used for this test.  | 
|
protected  File | 
getResourceFile(String name)
Retrieves a new File instance pointing to the specified resource name.  | 
|
protected  File | 
serialize(Object obj)
Serialize the given object into a temp file and return this file.  | 
|
protected  void | 
setUp()
 | 
|
protected  void | 
sleep(long millis)
 | 
|
protected  void | 
tearDown()
 | 
|
protected  void | 
waitForAlarm(long time,
             AlarmManager alarmMgr,
             boolean reallyWaitFor,
             String logPrefix)
 | 
|
protected  void | 
waitForLuceneIndexation(Publication pub)
 | 
|
| Methods inherited from class junit.framework.TestCase | 
|---|
countTestCases, createResult, getName, run, run, runBare, runTest, setName, toString | 
| Methods inherited from class junit.framework.Assert | 
|---|
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, fail, fail, failNotEquals, failNotSame, failSame | 
| Methods inherited from class java.lang.Object | 
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | 
| Field Detail | 
|---|
protected static FriendlyURLFilter friendlyURLFilter
protected static Channel channel
protected static String[] langs
channel.getLanguageList())
protected static Member admin
protected static Workspace defaultWorkspace
protected static Group defaultGroup
protected static String A_VERY_LONG_TEXT
| Constructor Detail | 
|---|
public JcmsTestCase()
| Method Detail | 
|---|
protected void setUp()
              throws Exception
setUp in class junit.framework.TestCaseException
protected void tearDown()
                 throws Exception
tearDown in class junit.framework.TestCaseExceptionprotected javax.servlet.ServletContext getMockServletContext()
MockServletContextprotected javax.servlet.http.HttpSession getMockHttpSession()
HttpSessionprotected javax.servlet.http.HttpServletRequest getMockHttpServletRequest()
MockHttpServletRequestprotected javax.servlet.http.HttpServletRequest getMockHttpServletRequest(javax.servlet.http.HttpSession session)
MockHttpServletRequestprotected JcmsJspContext getMockJcmsJspContext()
protected JcmsJspContext getMockJcmsJspContext(javax.servlet.http.HttpServletRequest request)
request - the mock request to use, if null a new mock request is created
protected void assertStatusOK(ControllerStatus status)
protected void assertStatusForbidden(ControllerStatus status)
protected void assertStatusHasFailed(ControllerStatus status)
protected <T> void assertCmpGreater(Comparator<T> comparator,
                                    T o1,
                                    T o2)
protected <T> void assertCmpLower(Comparator<T> comparator,
                                  T o1,
                                  T o2)
protected <T> void assertCmpEquals(Comparator<T> comparator,
                                   T o1,
                                   T o2)
protected <T> void assertCmpOpposite(Comparator<T> comparator,
                                     T o1,
                                     T o2)
protected <T> void assertCmpSame(Comparator<T> c1,
                                 Comparator<T> c2,
                                 T o1,
                                 T o2)
protected void assertSameContent(Object[] array1,
                                 Object[] array2)
protected void assertNotSameContent(Object[] array1,
                                    Object[] array2)
protected void assertSameContent(Set<?> set1,
                                 Set<?> set2)
protected void assertNotSameContent(Set<?> set1,
                                    Set<?> set2)
protected void assertSameContent(List<?> list1,
                                 List<?> list2)
protected void assertNotSameContent(List<?> list1,
                                    List<?> list2)
protected void assertSameContent(Map<?,?> map1,
                                 Map<?,?> map2)
protected void assertNotSameContent(Map<?,?> map1,
                                    Map<?,?> map2)
protected void assertSameContent(Date date1,
                                 Date date2)
protected void assertNotSameContent(Date date1,
                                    Date date2)
protected void assertIsEmpty(Object obj)
protected void assertNotEmpty(Object obj)
protected void assertDateRange(Date date,
                               Date lowerDate,
                               Date upperDate)
date - the date to be testedlowerDate - the lower date limit (may be null)upperDate - the upper date limit (may be null)
protected void assertDateRangeStrict(Date date,
                                     Date lowerDate,
                                     Date upperDate)
date - the date to be testedlowerDate - the lower date limit (may be null)upperDate - the upper date limit (may be null)
public static void assertObjectIsGarbageCollected(WeakReference<? extends Object> wRef,
                                                  long timeout)
IMPORTANT : in order for this method to work properly and success, you must get rid of all strong references of your object in the method callee. For example :
Publication pub1 = createSmallNews(admin, defaultWorkspace); pub1.performDelete(); // 1. Create WeakReference for the object WeakReference<Object> pub1WeakRef = new WeakReference<Object>(pub1); // 2. Remove strong reference for the object pub1 = null; // 3. Test object is garbage collected correctly assertObjectIsGarbageCollected(pub1WeakRef, 10*MILLIS_IN_ONE_SECOND);
 Implementation note : this method will trigger a GC through
 System.gc() every second until the timeout has been
 reached or the object is detected has garbage collected.
wRef - the object WeakReference (required to prevent strong reference of object through callstack)timeout - the timeout after which this method will consider (should be a multiple of 1000 ms with current implementation)protected File getResourceFile(String name)
   File testFile1 = getResourceFile("com/company/jcms/MyFeature_testFile1.txt");
 
 
 Current implementation is to invoke class loader of current class :
  return new File(getClass().getClassLoader().getResource(name).getFile());
name - the name of the resource, a '/'-separated path name that
        identifies the resource. e.g "com/company/jcms/MyFeature_testFile1.txt"
protected File serialize(Object obj)
                  throws Exception
obj - the Object to be serialized
Exception
protected Object deserialize(File file)
                      throws Exception
file - the file
Exceptionprotected void beginTransaction()
protected void commitTransaction()
protected void deleteData(Data... array)
protected void deleteData(String... ids)
protected void deleteOnTearDown(Data data)
protected void sleep(long millis)
millis - the length of time to sleep in milliseconds.
protected void waitForAlarm(long time,
                            AlarmManager alarmMgr,
                            boolean reallyWaitFor,
                            String logPrefix)
protected void waitForLuceneIndexation(Publication pub)
  | 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||