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