[P-unit-devel] SF.net SVN: p-unit: [190] trunk/punit
Status: Beta
Brought to you by:
zhanghuangzhu
|
From: <zha...@us...> - 2007-06-04 06:27:21
|
Revision: 190
http://p-unit.svn.sourceforge.net/p-unit/?rev=190&view=rev
Author: zhanghuangzhu
Date: 2007-06-03 23:27:22 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
Andrew Zhang: Added class exclude annotation
Modified Paths:
--------------
trunk/punit/src/org/punit/method/MethodFilter.java
trunk/punit/src/org/punit/method/NameMethodFilter.java
trunk/punit/src/org/punit/runner/AbstractRunner.java
trunk/punit/src/org/punit/suite/builder/TestSuiteBuilder.java
trunk/punit/src/org/punit/suite/builder/TestSuiteBuilderImpl.java
trunk/punit.extension/src/org/punit/annotation/Test.java
trunk/punit.extension/src/org/punit/method/AnnotationMethodFilter.java
trunk/punit.test/src/tests/api/org/punit/method/AnnotationMethodFilterTest.java
trunk/punit.test/src/tests/api/org/punit/runner/ConcurrentRunnerTest.java
trunk/punit.test/src/tests/api/org/punit/runner/SoloRunnerTest.java
trunk/punit.test/src/tests/api/org/punit/testclasses/AnnotationTestClass.java
Modified: trunk/punit/src/org/punit/method/MethodFilter.java
===================================================================
--- trunk/punit/src/org/punit/method/MethodFilter.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit/src/org/punit/method/MethodFilter.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -1,3 +1,5 @@
+/* (C) Copyright 2007, by Andrew Zhang */
+
package org.punit.method;
import java.io.*;
@@ -4,11 +6,18 @@
import java.lang.reflect.*;
public interface MethodFilter extends Serializable {
+
/**
+ * Judges whether this test class is excluded.
+ *
+ * @return returns true if the test class is excluded.
+ */
+ public boolean isExcluded(Class clazz);
+
+ /**
* Judges whether this method is a test method.
*
- * @return returns true if the test modifier, name, and parameter conform to
- * the convention of a test method.
+ * @return returns true if it is a test method.
*/
public boolean isTestMethod(Method method);
Modified: trunk/punit/src/org/punit/method/NameMethodFilter.java
===================================================================
--- trunk/punit/src/org/punit/method/NameMethodFilter.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit/src/org/punit/method/NameMethodFilter.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -1,3 +1,5 @@
+/* (C) Copyright 2007, by Andrew Zhang */
+
package org.punit.method;
import java.lang.reflect.*;
@@ -9,6 +11,10 @@
private static final long serialVersionUID = -1252188754463864599L;
+ public boolean isExcluded(Class method) {
+ return false;
+ }
+
public Method getCheckMethod(Method method) {
String checkMethodName = "check_" + method.getName(); //$NON-NLS-1$
return ReflectionUtil.getMethod(method.getDeclaringClass(),
Modified: trunk/punit/src/org/punit/runner/AbstractRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/AbstractRunner.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit/src/org/punit/runner/AbstractRunner.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -41,10 +41,11 @@
_methodRunner.setEventListeners(_eventListeners);
_methodRunner.setRunnerProperties(_properties);
registerLoggerListeners();
- setMethodFilter(new NameMethodFilter());
+ setFilter(new NameMethodFilter());
}
- public void setMethodFilter(MethodFilter filter) {
+ public void setFilter(MethodFilter filter) {
+ _testSuiteBuiler.setFilter(filter);
_testMethodBuilder.setMethodFilter(filter);
_methodRunner.setMethodFilter(filter);
}
Modified: trunk/punit/src/org/punit/suite/builder/TestSuiteBuilder.java
===================================================================
--- trunk/punit/src/org/punit/suite/builder/TestSuiteBuilder.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit/src/org/punit/suite/builder/TestSuiteBuilder.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -4,6 +4,8 @@
import java.io.*;
+import org.punit.method.*;
+
/**
* Interface for test suite builder.
* @see TestSuiteLabel
@@ -17,4 +19,6 @@
* @return
*/
public Object[] buildTestClasses(Class testSutie);
+
+ public void setFilter(MethodFilter filter);
}
Modified: trunk/punit/src/org/punit/suite/builder/TestSuiteBuilderImpl.java
===================================================================
--- trunk/punit/src/org/punit/suite/builder/TestSuiteBuilderImpl.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit/src/org/punit/suite/builder/TestSuiteBuilderImpl.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -4,13 +4,20 @@
import java.util.*;
+import org.punit.method.*;
import org.punit.type.*;
import org.punit.util.*;
public class TestSuiteBuilderImpl implements TestSuiteBuilder {
- private static final long serialVersionUID = 633363267326297920L;
+ private static final long serialVersionUID = -4468961881014123138L;
+
+ private MethodFilter _filter;
+ public void setFilter(MethodFilter filter) {
+ _filter = filter;
+ }
+
/**
* @see TestSuiteBuilder#buildTestClasses(Class)
*/
@@ -29,6 +36,9 @@
}
private void buildTestClassFromTestSuite(List testClasses, Class clazz) {
+ if(_filter.isExcluded(clazz)) {
+ return;
+ }
PUnitTestSuite testSuite = (PUnitTestSuite) ReflectionUtil.newInstance(clazz);
testClasses.add(new TestSuiteLabelImpl(testSuite, true));
Class[] suite = testSuite.testSuite();
@@ -39,6 +49,9 @@
}
private void buildTestClassesFromClass(List testClasses, Class clazz) {
+ if(_filter.isExcluded(clazz)) {
+ return;
+ }
testClasses.add(clazz);
}
Modified: trunk/punit.extension/src/org/punit/annotation/Test.java
===================================================================
--- trunk/punit.extension/src/org/punit/annotation/Test.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit.extension/src/org/punit/annotation/Test.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -5,12 +5,13 @@
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
public @interface Test {
Class<? extends Throwable> expected() default NoException.class;
String checkMethod() default "";
+
+ boolean excluded() default false;
public class NoException extends Throwable {
private static final long serialVersionUID = 3987745685001380514L;
Modified: trunk/punit.extension/src/org/punit/method/AnnotationMethodFilter.java
===================================================================
--- trunk/punit.extension/src/org/punit/method/AnnotationMethodFilter.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit.extension/src/org/punit/method/AnnotationMethodFilter.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -25,6 +25,15 @@
return _delegate.getCheckMethod(method);
}
+ @SuppressWarnings("unchecked")
+ public boolean isExcluded(Class clazz) {
+ Test testAnnotation = (Test) clazz.getAnnotation(Test.class);
+ if(testAnnotation == null) {
+ return false;
+ }
+ return testAnnotation.excluded();
+ }
+
public boolean isTestMethod(Method method) {
Test testAnnotation = method.getAnnotation(Test.class);
return (testAnnotation != null) || _delegate.isTestMethod(method);
Modified: trunk/punit.test/src/tests/api/org/punit/method/AnnotationMethodFilterTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/method/AnnotationMethodFilterTest.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit.test/src/tests/api/org/punit/method/AnnotationMethodFilterTest.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -13,6 +13,12 @@
public class AnnotationMethodFilterTest extends TestCase {
AnnotationMethodFilter _filter = new AnnotationMethodFilter();
+ public void testIsExcluded() {
+ assertTrue(_filter.isExcluded(ExcludedClass.class));
+ assertFalse(_filter.isExcluded(NonExcludedClass.class));
+ assertFalse(_filter.isExcluded(getClass()));
+ }
+
public void testIsTestMethod() {
Method method;
method = ReflectionUtil.getMethod(getClass(), "_test1", new Class[] {}); //$NON-NLS-1$
@@ -41,7 +47,7 @@
}
public void testGetExpectedException() {
- Method method, checkMethod;
+ Method method;
Class exception;
method = ReflectionUtil.getMethod(getClass(), "_test1", new Class[] {}); //$NON-NLS-1$
@@ -78,4 +84,14 @@
public void check__test3() {
}
+
+ @Test(excluded = true)
+ static class ExcludedClass {
+
+ }
+
+ @Test(excluded = false)
+ static class NonExcludedClass {
+
+ }
}
Modified: trunk/punit.test/src/tests/api/org/punit/runner/ConcurrentRunnerTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/runner/ConcurrentRunnerTest.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit.test/src/tests/api/org/punit/runner/ConcurrentRunnerTest.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -41,7 +41,7 @@
public void testRunAnnotationTest() {
AnnotationTestClass.reset();
- _runner.setMethodFilter(new AnnotationMethodFilter());
+ _runner.setFilter(new AnnotationMethodFilter());
_runner.run(AnnotationTestClass.class);
AnnotationTestClass.assertTestClassRun();
}
Modified: trunk/punit.test/src/tests/api/org/punit/runner/SoloRunnerTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/runner/SoloRunnerTest.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit.test/src/tests/api/org/punit/runner/SoloRunnerTest.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -37,7 +37,7 @@
public void testRunAnnotationTest() {
AnnotationTestClass.reset();
- _runner.setMethodFilter(new AnnotationMethodFilter());
+ _runner.setFilter(new AnnotationMethodFilter());
_runner.run(AnnotationTestClass.class);
AnnotationTestClass.assertTestClassRun();
}
Modified: trunk/punit.test/src/tests/api/org/punit/testclasses/AnnotationTestClass.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/testclasses/AnnotationTestClass.java 2007-06-04 06:04:31 UTC (rev 189)
+++ trunk/punit.test/src/tests/api/org/punit/testclasses/AnnotationTestClass.java 2007-06-04 06:27:22 UTC (rev 190)
@@ -10,7 +10,7 @@
public static void main(String[] args) {
SoloRunner soloRunner = new SoloRunner();
- soloRunner.setMethodFilter(new AnnotationMethodFilter());
+ soloRunner.setFilter(new AnnotationMethodFilter());
soloRunner.run(AnnotationTestClass.class);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|