we can switch to the full set of matchers by adding the dependencies - Stephen
--- Sent from my Android phone, so random spelling mistakes, random nonsense words and other nonsense are a direct result of using swype to type on the screen On 3 Aug 2011 20:40, "Mark Struberg" <strub...@yahoo.de> wrote: > Txs Stephen, I just did it that way to not have 10s of different methods. > > Anything else I should do different in those tests? > > I had troubles to find enough hamcrest machters. E.g. a startsWith exists in the hamcrest libs, but I could not find them in junit-4.8.2. > Any tips? > > txs and LieGrue, > strub > > > --- On Wed, 8/3/11, Stephen Connolly <stephen.alan.conno...@gmail.com> wrote: > >> From: Stephen Connolly <stephen.alan.conno...@gmail.com> >> Subject: Re: svn commit: r1153562 - in /maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util: ExceptionUtilsTest.java exceptionutils/TestExceptionWithDetail.java >> To: dev@maven.apache.org >> Cc: comm...@maven.apache.org >> Date: Wednesday, August 3, 2011, 7:22 PM >> fyi, you may have a little >> inefficiency when you have an expected exception. >> >> >> @Test(expected=...) >> public void dosomethingblowsup() throws Exception { >> dosomething(); >> } >> >> is better than >> >> @Test >> public void dosomethingblowsup() throws Exception { >> try { >> dosomething(); >> fail(); >> } catch (...) { >> // expected >> } >> } >> >> unless you have further asserts to make on the expected >> exception. >> >> - Stephen >> >> --- >> Sent from my Android phone, so random spelling mistakes, >> random nonsense >> words and other nonsense are a direct result of using swype >> to type on the >> screen >> On 3 Aug 2011 17:16, <strub...@apache.org> >> wrote: >> > Author: struberg >> > Date: Wed Aug 3 16:16:23 2011 >> > New Revision: 1153562 >> > >> > URL: http://svn.apache.org/viewvc?rev=1153562&view=rev >> > Log: >> > refine ExceptionUtilsTest >> > >> > almost done now! >> > >> > Added: >> > >> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/exceptionutils/TestExceptionWithDetail.java >> > - copied, changed from r1153297, >> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/exceptionutils/TestException.java >> > Modified: >> > >> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/ExceptionUtilsTest.java >> > >> > Modified: >> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/ExceptionUtilsTest.java >> > URL: >> http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/ExceptionUtilsTest.java?rev=1153562&r1=1153561&r2=1153562&view=diff >> > >> ============================================================================== >> > --- >> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/ExceptionUtilsTest.java >> (original) >> > +++ >> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/ExceptionUtilsTest.java >> Wed Aug 3 16:16:23 2011 >> > @@ -21,11 +21,14 @@ package org.codehaus.plexus.util; >> > >> > import org.apache.maven.tck.FixPlexusBugs; >> > import >> org.codehaus.plexus.util.exceptionutils.TestException; >> > +import >> org.codehaus.plexus.util.exceptionutils.TestExceptionWithDetail; >> > import org.junit.Rule; >> > import org.junit.Test; >> > import org.junit.Assert; >> > import org.junit.matchers.JUnitMatchers; >> > >> > +import java.io.ByteArrayOutputStream; >> > +import java.io.PrintStream; >> > import java.lang.reflect.InvocationTargetException; >> > import java.sql.SQLException; >> > import java.util.List; >> > @@ -245,7 +248,7 @@ public class ExceptionUtilsTest >> extends >> > // NPE safe test >> > try >> > { >> > - ExceptionUtils.getStackTrace( (Throwable) null ); >> > + ExceptionUtils.getStackTrace((Throwable) null); >> > fail( "getStackTrace(null) NPE expected" ); >> > } >> > catch ( NullPointerException e ) >> > @@ -274,7 +277,7 @@ public class ExceptionUtilsTest >> extends >> > // NPE safe test >> > try >> > { >> > - ExceptionUtils.getStackFrames( (Throwable) null ); >> > + ExceptionUtils.getStackFrames((Throwable) null); >> > fail( "getStackFrames(null) NPE expected" ); >> > } >> > catch ( NullPointerException e ) >> > @@ -315,7 +318,7 @@ public class ExceptionUtilsTest >> extends >> > >> > String[] stackFrames = ExceptionUtils.getStackFrames( >> stackTrace ); >> > assertNotNull( stackFrames ); >> > - assertEquals( 23, stackFrames.length ); >> > + assertEquals(23, stackFrames.length); >> > >> > assertEquals( "java.lang.NullPointerException: >> mymessage", stackFrames[0] >> ); >> > assertThat( "stackFrames", stackFrames[1] >> > @@ -339,8 +342,26 @@ public class ExceptionUtilsTest >> extends >> > @Test >> > public void testGetThrowableCount() >> > { >> > - //X TODO refine test! >> > - logger.warning("TODO implement!"); >> > + NullPointerException npe = new NullPointerException( >> "dooh just a >> random, nullpointer" ); >> > + SQLException sqlException = new SQLException( npe >> ); >> > + TestException testException = new TestException(); >> > + testException.setSourceException( sqlException ); >> > + >> > + assertThat( "getThrowableCount" >> > + , ExceptionUtils.getThrowableCount( npe ) >> > + , is( 1 )); >> > + >> > + assertThat( "getThrowableCount" >> > + , ExceptionUtils.getThrowableCount( sqlException ) >> > + , is( 2 )); >> > + >> > + assertThat( "getThrowableCount" >> > + , ExceptionUtils.getThrowableCount( testException ) >> > + , is( 3 )); >> > + >> > + // NPE safe test >> > + // this method should NOT throw a NPE on a null >> argument! >> > + ExceptionUtils.getThrowableCount( null ); >> > } >> > >> > /** >> > @@ -350,18 +371,109 @@ public class ExceptionUtilsTest >> extends >> > @Test >> > public void testIndexOfThrowable() >> > { >> > - //X TODO refine test! >> > - logger.warning("TODO implement!"); >> > + NullPointerException npe = new NullPointerException( >> "dooh just a >> random, nullpointer" ); >> > + SQLException sqlException = new SQLException( npe >> ); >> > + TestException testException = new TestException(); >> > + testException.setSourceException( sqlException ); >> > + >> > + assertThat("indexOfThrowable" >> > + , ExceptionUtils.indexOfThrowable(npe, >> NullPointerException.class) >> > + , is(0)); >> > + >> > + assertThat( "indexOfThrowable for non contained >> Exception type" >> > + , ExceptionUtils.indexOfThrowable( npe, >> SQLException.class ) >> > + , is( -1 )); >> > + >> > + >> > + assertThat( "indexOfThrowable" >> > + , ExceptionUtils.indexOfThrowable( testException, >> NullPointerException.class ) >> > + , is( 2 )); >> > + >> > + assertThat( "indexOfThrowable for non contained >> Exception type" >> > + , ExceptionUtils.indexOfThrowable( testException, >> SQLException.class ) >> > + , is( 1 )); >> > + >> > + assertThat( "indexOfThrowable" >> > + , ExceptionUtils.indexOfThrowable( testException, >> TestException.class ) >> > + , is( 0 )); >> > + >> > + >> > + // tests for indexOfThrowable with start index >> param >> > + assertThat( "indexOfThrowable" >> > + , ExceptionUtils.indexOfThrowable( testException, >> NullPointerException.class, 2 ) >> > + , is( 2 )); >> > + >> > + assertThat( "indexOfThrowable" >> > + , ExceptionUtils.indexOfThrowable( testException, >> SQLException.class, 2 >> ) >> > + , is( -1 )); >> > + >> > + try >> > + { >> > + ExceptionUtils.indexOfThrowable( testException, >> TestException.class, 3 >> ); >> > + fail( "indexOfThrowable with too large inces" ); >> > + } >> > + catch ( IndexOutOfBoundsException e ) >> > + { >> > + //nothing to do, Exception was expected >> > + } >> > + >> > + // NPE safe tests >> > + try >> > + { >> > + ExceptionUtils.indexOfThrowable( null, >> TestException.class ); >> > + fail( "indexOfThrowable(null, Exception.class) NPE >> expected" ); >> > + } >> > + catch ( IndexOutOfBoundsException e ) >> > + { >> > + //nothing to do, Exception was expected >> > + } >> > + assertThat( "indexOfThrowable for null Exception >> type" >> > + , ExceptionUtils.indexOfThrowable(npe, null) >> > + , is(-1)); >> > } >> > >> > /** >> > + * Most probably this only ever returns false on null >> in JDK > 1.4 >> > + * Because Throwable itself nowadays has a getCause() >> method which >> > + * is in the method list... >> > + * >> > * @see ExceptionUtils#isNestedThrowable(Throwable) >> > */ >> > @Test >> > public void testIsNestedThrowable() >> > { >> > - //X TODO refine test! >> > - logger.warning("TODO implement!"); >> > + NullPointerException npe = new NullPointerException( >> "dooh just a >> random, nullpointer" ); >> > + SQLException sqlException = new SQLException( npe >> ); >> > + TestException testException = new TestException(); >> > + testException.setSourceException( sqlException ); >> > + >> > + assertThat( "isNestedThrowable" >> > + , ExceptionUtils.isNestedThrowable( null ) >> > + , is( false ) ); >> > + >> > + assertThat("isNestedThrowable" >> > + , ExceptionUtils.isNestedThrowable(npe) >> > + , is(true)); >> > + >> > + assertThat( "isNestedThrowable" >> > + , ExceptionUtils.isNestedThrowable( sqlException ) >> > + , is( true ) ); >> > + >> > + assertThat( "isNestedThrowable" >> > + , ExceptionUtils.isNestedThrowable( new >> InvocationTargetException( npe ) >> ) >> > + , is( true ) ); >> > + >> > + assertThat( "isNestedThrowable" >> > + , ExceptionUtils.isNestedThrowable( new >> TestExceptionWithDetail() ) >> > + , is( true ) ); >> > + >> > + assertThat( "isNestedThrowable" >> > + , ExceptionUtils.isNestedThrowable( new Exception() >> ) >> > + , is( true ) ); >> > + >> > + assertThat( "isNestedThrowable" >> > + , ExceptionUtils.isNestedThrowable( new Throwable() >> ) >> > + , is( true ) ); >> > } >> > >> > /** >> > @@ -372,8 +484,32 @@ public class ExceptionUtilsTest >> extends >> > @Test >> > public void testPrintRootCauseStackTrace() >> > { >> > - //X TODO refine test! >> > - logger.warning("TODO implement!"); >> > + NullPointerException npe = new NullPointerException( >> "dooh just a >> random, nullpointer" ); >> > + SQLException sqlException = new SQLException( npe >> ); >> > + TestException testException = new TestException(); >> > + testException.setSourceException( sqlException ); >> > + >> > + ByteArrayOutputStream bao = new >> ByteArrayOutputStream(); >> > + PrintStream outStream = new PrintStream( bao ); >> > + PrintStream originalErr = System.err; >> > + >> > + try >> > + { >> > + System.setErr( outStream ); >> > + ExceptionUtils.printRootCauseStackTrace( npe ); >> > + >> > + assertThat( "stackFrames" >> > + , bao.toString() >> > + , JUnitMatchers.containsString( >> "java.lang.NullPointerException: dooh >> just a random, nullpointer" >> > + + "\n\tat >> org.codehaus.plexus.util.ExceptionUtilsTest." >> > + + >> "testPrintRootCauseStackTrace(ExceptionUtilsTest.java:" ) >> ); >> > + } >> > + finally >> > + { >> > + System.setErr( originalErr ); >> > + } >> > + >> > + //X TODO A FEW THINGS STILL MISSING! will continue >> later today... >> > } >> > >> > } >> > >> > Copied: >> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/exceptionutils/TestExceptionWithDetail.java >> (from r1153297, >> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/exceptionutils/TestException.java) >> > URL: >> http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/exceptionutils/TestExceptionWithDetail.java?p2=maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/exceptionutils/TestExceptionWithDetail.java&p1=maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/exceptionutils/TestException.java&r1=1153297&r2=1153562&rev=1153562&view=diff >> > >> ============================================================================== >> > --- >> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/exceptionutils/TestException.java >> (original) >> > +++ >> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/src/test/java/org/codehaus/plexus/util/exceptionutils/TestExceptionWithDetail.java >> Wed Aug 3 16:16:23 2011 >> > @@ -23,36 +23,26 @@ package >> org.codehaus.plexus.util.excepti >> > >> > >> > /** >> > + * This test exception has a 'detail' field. >> > * >> > * @author <a href="mailto:strub...@yahoo.de">Mark >> Struberg</a> >> > */ >> > -public class TestException extends Exception >> > +public class TestExceptionWithDetail extends >> Exception >> > { >> > - private Throwable cause; >> > - private Throwable specialCause; >> > + private Throwable detail; >> > >> > - public TestException() >> > + public TestExceptionWithDetail() >> > { >> > super(); >> > } >> > >> > - public void setSourceException( Throwable cause ) >> > + public Throwable getDetail() >> > { >> > - this.cause = cause; >> > + return detail; >> > } >> > >> > - public Throwable getSourceException() >> > + public void setDetail( Throwable detail ) >> > { >> > - return cause; >> > - } >> > - >> > - public Throwable getSpecialCause() >> > - { >> > - return specialCause; >> > - } >> > - >> > - public void setSpecialCause( Throwable specialCause >> ) >> > - { >> > - this.specialCause = specialCause; >> > + this.detail = detail; >> > } >> > } >> > >> > >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > For additional commands, e-mail: dev-h...@maven.apache.org >