KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > test > ConditionalTestCase


1 /*
2  * Copyright 2002-2006 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.springframework.test;
18
19 import junit.framework.TestCase;
20 import org.apache.commons.logging.Log;
21 import org.apache.commons.logging.LogFactory;
22
23 /**
24  * Superclass for tests that allows conditional test execution
25  * at individual test method level.
26  *
27  * The <code>isDisabledInThisEnvironment</code> method is invoked before the
28  * execution of each test method. Subclasses can override that method to return
29  * whether or not the given test should be executed. Note that the tests will
30  * still appear to have executed and passed; log output will show that the test
31  * was not executed.
32  *
33  * @author Rod Johnson
34  * @since 2.0
35  * @see #isDisabledInThisEnvironment
36  */

37 public abstract class ConditionalTestCase extends TestCase {
38     
39     private static int disabledTestCount;
40
41     /** Logger available to subclasses */
42     protected final Log logger = LogFactory.getLog(getClass());
43
44
45     /**
46      * Default constructor for ConditionalTestCase.
47      */

48     public ConditionalTestCase() {
49     }
50
51     /**
52      * Constructor for ConditionalTestCase with a JUnit name.
53      */

54     public ConditionalTestCase(String JavaDoc name) {
55         super(name);
56     }
57
58     
59     public void runBare() throws Throwable JavaDoc {
60         // getName will return the name of the method being run
61
if (isDisabledInThisEnvironment(getName())) {
62             recordDisabled();
63             logger.info("**** " + getClass().getName() + "." + getName() + " disabled in this environment: " +
64                     "Total disabled tests=" + getDisabledTestCount());
65             return;
66         }
67         
68         // Let JUnit handle execution
69
super.runBare();
70     }
71
72     /**
73      * Should this test run?
74      * @param testMethodName name of the test method
75      * @return whether the test should execute in the current envionment
76      */

77     protected boolean isDisabledInThisEnvironment(String JavaDoc testMethodName) {
78         return false;
79     }
80
81     /**
82      * Record a disabled test.
83      * @return the current disabled test count
84      */

85     protected int recordDisabled() {
86         return ++disabledTestCount;
87     }
88
89
90     /**
91      * Return the number of tests disabled in this environment.
92      */

93     public static int getDisabledTestCount() {
94         return disabledTestCount;
95     }
96
97 }
98
Popular Tags