Default Values


The reason for ignoring a test method is likely to be the same most of the time. Most often, you will want to temporarily comment out a test while fixing other broken tests. Supplying a reason each time can be onerous, so you would like to have a default ignore reason. Here's how you might reflect this need in a TestRunner test:


 @TestMethod public void ignoreWithDefaultReason() {    runTests(DefaultIgnoreMethodTest.class);    verifyTests(methodNameA, methodNameB);    Map<Method, Ignore> ignoredMethods = runner.getIgnoredMethods();    Map.Entry<Method, Ignore> entry = getSoleEntry(ignoredMethods);    Ignore ignore = entry.getValue();    assert TestRunner.DEFAULT_IGNORE_REASON.       equals(ignore.reasons()[0]); } class DefaultIgnoreMethodTest {    @TestMethod public void testA() {}    @TestMethod public void testB() {}    @Ignore(initials=TestRunnerTest.IGNORE_INITIALS)       @TestMethod public void testC() {} } 

You will need to define the constant DEFAULT_IGNORE_REASON in the TestRunner class to be whatever string you desire:

 class TestRunner {    public static final String DEFAULT_IGNORE_REASON =       "temporarily commenting out";    // ... 

You can supply a default value on any annotation type member. The default must be a constant at compile time. The new definition of @Ignore includes a default value on the reasons member. Note use of the keyword default to separate the member signature from the default value.

 package sis.testing; import java.lang.annotation.*; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Ignore {    String[] reasons() default TestRunner.DEFAULT_IGNORE_REASON;    String initials(); } 



Agile Java. Crafting Code with Test-Driven Development
Agile Javaв„ў: Crafting Code with Test-Driven Development
ISBN: 0131482394
EAN: 2147483647
Year: 2003
Pages: 391
Authors: Jeff Langr

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net