|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object junit.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.xml
WEB-INF/data/custom.prop.junit
: copy of WEB-INF/data/custom.prop.release
if it exists, otherwise copy of WEB-INF/data/custom.prop
WEB-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,
boolean heapDump)
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 |
assertStatusHasFailed(String prop,
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.HttpServletResponse |
getMockHttpServletResponse()
Convenient Method to return a new instance of a fake http servlet response. |
|
protected javax.servlet.http.HttpServletResponse |
getMockHttpServletResponse(javax.servlet.http.HttpSession session)
Convenient Method to return a new instance of a fake http servlet response 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, format |
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.TestCase
Exception
protected void tearDown() throws Exception
tearDown
in class junit.framework.TestCase
Exception
protected javax.servlet.ServletContext getMockServletContext()
MockServletContext
protected javax.servlet.http.HttpSession getMockHttpSession()
HttpSession
protected javax.servlet.http.HttpServletRequest getMockHttpServletRequest()
MockHttpServletRequest
protected javax.servlet.http.HttpServletRequest getMockHttpServletRequest(javax.servlet.http.HttpSession session)
MockHttpServletRequest
protected javax.servlet.http.HttpServletResponse getMockHttpServletResponse()
MockHttpServletResponse
protected javax.servlet.http.HttpServletResponse getMockHttpServletResponse(javax.servlet.http.HttpSession session)
MockHttpServletResponse
protected 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 void assertStatusHasFailed(String prop, 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, boolean heapDump)
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)heapDump
- perform HEAP dump on failure for easier debuggingprotected 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
Exception
protected 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 |