Patches for 2191102 and 2196462
"Amanda Robinson" <[email protected]> Wed, 17 Dec 2008 14:08:33 -0500
| Newsgroups | gmane.comp.java.junit.devel |
|---|---|
| Message-ID | <[email protected]> |
See attachments: DataPointPatch.txt: fixes: AllMembersSupplier should only add @DataPoint fields - ID: 2191102 Includes one added unit test to AnnotationTest.java Includes update to AllMembersSupplier.addFields(ParameterSignature, List<PotentialAssignment>) Includes addition of @DataPoint annotation to every unit test that appeared to require it, as some had used only 'public static' TheoriesPatch.txt: fixes: @Theory annotation optional when running with Theories - ID: 2196462 Includes three additional unit tests to AnnotationTest.java Includes update to Theories.validateTestMethods(List<Throwable>) I couldn't find a way to put these files directly on SourceForge--I'm assuming this has to do with various permissions, but if there's somewhere to do this that I'm just not aware of and it would be easier, please do point me in that direction. Thank you, ~Amanda ------------------------------------------------------------------------------ SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada. The future of the web can't happen without you. Join us at MIX09 to help pave the way to the Next Web now. Learn more and register at http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/ _______________________________________________ Junit-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/junit-devel
DataPointPatch.txt
(text/plain, 11.4 KB)
### Eclipse Workspace Patch 1.0
#P junit
Index: src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java,v
retrieving revision 1.6
diff -u -r1.6 WithDataPointMethod.java
--- src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java 18 Aug 2008 14:54:26 -0000 1.6
+++ src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java 17 Dec 2008 18:33:56 -0000
@@ -75,8 +75,10 @@
return new ArrayList<Object>();
}
+ @DataPoint
public static int ONE= 1;
+ @DataPoint
public static int TWO= 2;
@Theory
@@ -98,6 +100,7 @@
return 100;
}
+ @DataPoint
public Date notADataPoint() {
return new Date();
}
Index: src/test/java/org/junit/tests/experimental/theories/runner/WhenNoParametersMatch.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/theories/runner/WhenNoParametersMatch.java,v
retrieving revision 1.9
diff -u -r1.9 WhenNoParametersMatch.java
--- src/test/java/org/junit/tests/experimental/theories/runner/WhenNoParametersMatch.java 26 Jun 2008 13:55:24 -0000 1.9
+++ src/test/java/org/junit/tests/experimental/theories/runner/WhenNoParametersMatch.java 17 Dec 2008 18:33:56 -0000
@@ -7,6 +7,7 @@
import static org.junit.experimental.results.PrintableResult.testResult;
import static org.junit.internal.matchers.StringContains.containsString;
import org.hamcrest.Matcher;
+import org.junit.experimental.theories.DataPoint;
import org.junit.experimental.theories.DataPoints;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
@@ -22,6 +23,7 @@
@RunWith(Theories.class)
public static class AssumptionsFail {
+ @DataPoint
public static int DATA= 0;
public static Matcher<Integer> MATCHER= null;
Index: src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java,v
retrieving revision 1.4
diff -u -r1.4 UnsuccessfulWithDataPointFields.java
--- src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java 31 Jul 2008 14:28:18 -0000 1.4
+++ src/test/java/org/junit/tests/experimental/theories/runner/UnsuccessfulWithDataPointFields.java 17 Dec 2008 18:33:56 -0000
@@ -17,6 +17,7 @@
public class UnsuccessfulWithDataPointFields {
@RunWith(Theories.class)
public static class HasATheory {
+ @DataPoint
public static int ONE= 1;
@Theory
@@ -45,6 +46,7 @@
@RunWith(Theories.class)
public static class DoesntUseParams {
+ @DataPoint
public static int ONE= 1;
@Theory
@@ -61,8 +63,10 @@
@RunWith(Theories.class)
public static class NullsOK {
+ @DataPoint
public static String NULL= null;
+ @DataPoint
public static String A= "A";
@Theory
Index: src/test/java/org/junit/tests/experimental/theories/runner/SuccessfulWithDataPointFields.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/theories/runner/SuccessfulWithDataPointFields.java,v
retrieving revision 1.3
diff -u -r1.3 SuccessfulWithDataPointFields.java
--- src/test/java/org/junit/tests/experimental/theories/runner/SuccessfulWithDataPointFields.java 13 May 2008 18:03:58 -0000 1.3
+++ src/test/java/org/junit/tests/experimental/theories/runner/SuccessfulWithDataPointFields.java 17 Dec 2008 18:33:56 -0000
@@ -23,6 +23,7 @@
public class SuccessfulWithDataPointFields {
@RunWith(Theories.class)
public static class HasATwoParameterTheory {
+ @DataPoint
public static int ONE= 1;
@Theory
Index: src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java
===================================================================
RCS file: /cvsroot/junit/junit/src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java,v
retrieving revision 1.12
diff -u -r1.12 AllMembersSupplier.java
--- src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java 18 Aug 2008 14:54:28 -0000 1.12
+++ src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java 17 Dec 2008 18:33:56 -0000
@@ -7,6 +7,7 @@
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.junit.experimental.theories.DataPoint;
@@ -92,7 +93,8 @@
if (sig.canAcceptArrayType(type)
&& field.getAnnotation(DataPoints.class) != null) {
addArrayValues(field.getName(), list, getStaticFieldValue(field));
- } else if (sig.canAcceptType(type)) {
+ } else if (sig.canAcceptType(type)
+ && field.getAnnotation(DataPoint.class) != null) {
list.add(PotentialAssignment
.forValue(field.getName(), getStaticFieldValue(field)));
}
Index: src/test/java/org/junit/tests/running/methods/AnnotationTest.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/running/methods/AnnotationTest.java,v
retrieving revision 1.2
diff -u -r1.2 AnnotationTest.java
--- src/test/java/org/junit/tests/running/methods/AnnotationTest.java 6 Aug 2008 13:29:14 -0000 1.2
+++ src/test/java/org/junit/tests/running/methods/AnnotationTest.java 17 Dec 2008 18:33:56 -0000
@@ -3,6 +3,7 @@
import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.both;
import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.junit.Assume.assumeTrue;
import java.util.Collection;
import java.util.HashSet;
@@ -14,6 +15,9 @@
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.junit.experimental.theories.DataPoint;
+import org.junit.experimental.theories.Theories;
+import org.junit.experimental.theories.Theory;
import org.junit.runner.Description;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
@@ -518,4 +522,25 @@
assertEquals(2, result.getFailureCount());
}
+ @RunWith(Theories.class)
+ static public class StaticPublicNonDataPoints {
+ // DataPoints to be potential arguments for excludeTwo:
+ @DataPoint public static int ZERO = 0;
+ @DataPoint public static int TWO = 2;
+
+ // Not annoted as a DataPoint and therefore should be ignored:
+ public static int ONE = 1;
+
+ @Theory
+ public void excludeTwo(int i) {
+ assumeTrue(i < 2);
+ assertTrue(i == 0);
+ }
+ }
+
+ @Test public void testIgnoreStaticPublicNonDataPoints() {
+ JUnitCore core = new JUnitCore();
+ Result result = core.run(StaticPublicNonDataPoints.class);
+ assertEquals(0, result.getFailureCount());
+ }
}
Index: src/test/java/org/junit/tests/experimental/results/PrintableResultTest.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/results/PrintableResultTest.java,v
retrieving revision 1.2
diff -u -r1.2 PrintableResultTest.java
--- src/test/java/org/junit/tests/experimental/results/PrintableResultTest.java 7 Apr 2008 17:59:22 -0000 1.2
+++ src/test/java/org/junit/tests/experimental/results/PrintableResultTest.java 17 Dec 2008 18:33:56 -0000
@@ -8,6 +8,7 @@
import java.util.Arrays;
import org.junit.experimental.results.PrintableResult;
+import org.junit.experimental.theories.DataPoint;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.Description;
@@ -35,7 +36,7 @@
containsString(descriptionName), containsString(stackTraceClassName)));
}
- public static String SHELL_POINT= "Shell Point";
+ @DataPoint public static String SHELL_POINT= "Shell Point";
@Theory
public void includeMultipleFailures(String secondExceptionName) {
Index: src/test/java/org/junit/tests/experimental/AssumptionViolatedExceptionTest.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/AssumptionViolatedExceptionTest.java,v
retrieving revision 1.4
diff -u -r1.4 AssumptionViolatedExceptionTest.java
--- src/test/java/org/junit/tests/experimental/AssumptionViolatedExceptionTest.java 6 May 2008 16:42:11 -0000 1.4
+++ src/test/java/org/junit/tests/experimental/AssumptionViolatedExceptionTest.java 17 Dec 2008 18:33:56 -0000
@@ -8,6 +8,7 @@
import org.hamcrest.Matcher;
import org.hamcrest.StringDescription;
import org.junit.Test;
+import org.junit.experimental.theories.DataPoint;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.internal.AssumptionViolatedException;
@@ -15,11 +16,11 @@
@RunWith(Theories.class)
public class AssumptionViolatedExceptionTest {
- public static Object TWO= 2;
+ @DataPoint public static Object TWO= 2;
- public static Matcher<?> IS_THREE= is(3);
+ @DataPoint public static Matcher<?> IS_THREE= is(3);
- public static Matcher<?> NULL= null;
+ @DataPoint public static Matcher<?> NULL= null;
@Theory
public void toStringReportsMatcher(Object actual, Matcher<?> matcher) {
Index: src/test/java/org/junit/tests/experimental/theories/ParameterizedAssertionErrorTest.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/experimental/theories/ParameterizedAssertionErrorTest.java,v
retrieving revision 1.4
diff -u -r1.4 ParameterizedAssertionErrorTest.java
--- src/test/java/org/junit/tests/experimental/theories/ParameterizedAssertionErrorTest.java 7 Apr 2008 17:59:22 -0000 1.4
+++ src/test/java/org/junit/tests/experimental/theories/ParameterizedAssertionErrorTest.java 17 Dec 2008 18:33:56 -0000
@@ -6,6 +6,7 @@
import static org.junit.Assume.assumeThat;
import static org.junit.internal.matchers.StringContains.containsString;
import org.junit.Test;
+import org.junit.experimental.theories.DataPoint;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.experimental.theories.internal.ParameterizedAssertionError;
@@ -13,19 +14,19 @@
@RunWith(Theories.class)
public class ParameterizedAssertionErrorTest {
- public static final String METHOD_NAME= "methodName";
+ @DataPoint public static final String METHOD_NAME= "methodName";
- public static final NullPointerException NULL_POINTER_EXCEPTION= new NullPointerException();
+ @DataPoint public static final NullPointerException NULL_POINTER_EXCEPTION= new NullPointerException();
- public static Object[] NO_OBJECTS= new Object[0];
+ @DataPoint public static Object[] NO_OBJECTS= new Object[0];
- public static ParameterizedAssertionError A= new ParameterizedAssertionError(
+ @DataPoint public static ParameterizedAssertionError A= new ParameterizedAssertionError(
NULL_POINTER_EXCEPTION, METHOD_NAME);
- public static ParameterizedAssertionError B= new ParameterizedAssertionError(
+ @DataPoint public static ParameterizedAssertionError B= new ParameterizedAssertionError(
NULL_POINTER_EXCEPTION, METHOD_NAME);
- public static ParameterizedAssertionError B2= new ParameterizedAssertionError(
+ @DataPoint public static ParameterizedAssertionError B2= new ParameterizedAssertionError(
NULL_POINTER_EXCEPTION, "methodName2");
@Theory
TheoriesPatch.txt
(text/plain, 4.2 KB)
### Eclipse Workspace Patch 1.0
#P junit
Index: src/main/java/org/junit/experimental/theories/Theories.java
===================================================================
RCS file: /cvsroot/junit/junit/src/main/java/org/junit/experimental/theories/Theories.java,v
retrieving revision 1.25
diff -u -r1.25 Theories.java
--- src/main/java/org/junit/experimental/theories/Theories.java 31 Jul 2008 14:28:18 -0000 1.25
+++ src/main/java/org/junit/experimental/theories/Theories.java 17 Dec 2008 17:13:56 -0000
@@ -7,9 +7,11 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.junit.Assert;
+import org.junit.Test;
import org.junit.experimental.theories.PotentialAssignment.CouldNotGenerateValueException;
import org.junit.experimental.theories.internal.Assignments;
import org.junit.experimental.theories.internal.ParameterizedAssertionError;
@@ -45,8 +47,14 @@
@Override
protected void validateTestMethods(List<Throwable> errors) {
- for (FrameworkMethod each : computeTestMethods())
- each.validatePublicVoid(false, errors);
+ for (FrameworkMethod each : computeTestMethods()) {
+ // Theories are allowed to have parameters, but not non-Theory tests:
+ if(each.getAnnotation(Theory.class) != null) {
+ each.validatePublicVoid(false, errors);
+ } else {
+ each.validatePublicVoidNoArg(false, errors);
+ }
+ }
}
@Override
Index: src/test/java/org/junit/tests/running/methods/AnnotationTest.java
===================================================================
RCS file: /cvsroot/junit/junit/src/test/java/org/junit/tests/running/methods/AnnotationTest.java,v
retrieving revision 1.2
diff -u -r1.2 AnnotationTest.java
--- src/test/java/org/junit/tests/running/methods/AnnotationTest.java 6 Aug 2008 13:29:14 -0000 1.2
+++ src/test/java/org/junit/tests/running/methods/AnnotationTest.java 17 Dec 2008 17:13:56 -0000
@@ -3,6 +3,7 @@
import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.both;
import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.junit.Assume.assumeTrue;
import java.util.Collection;
import java.util.HashSet;
@@ -14,6 +15,9 @@
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.junit.experimental.theories.DataPoint;
+import org.junit.experimental.theories.Theories;
+import org.junit.experimental.theories.Theory;
import org.junit.runner.Description;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
@@ -517,5 +521,62 @@
assertTrue(log.contains("two"));
assertEquals(2, result.getFailureCount());
}
-
+
+ static public class ErrorWhenTestHasParameters {
+ @Test public void empty(int i) {
+ }
+ }
+
+ @Test public void testErrorWhenTestHasParameters() {
+ JUnitCore core = new JUnitCore();
+ Result result = core.run(ErrorWhenTestHasParameters.class);
+ assertEquals(1, result.getFailureCount());
+ String message = result.getFailures().get(0).getMessage();
+ assertThat(message, containsString("should have no parameters"));
+ }
+
+ @RunWith(Theories.class)
+ static public class NoErrorWhenTheoryHasParameters {
+ @DataPoint
+ public static int ZERO = 0;
+
+ @DataPoint
+ public static int ONE = 1;
+
+ @Theory
+ public void theoryMethod(int i) {
+ assumeTrue(i < 1);
+ assertTrue(i < 1);
+ }
+ }
+
+ @Test public void testNoErrorWhenTheoryHasParameters() {
+ JUnitCore core = new JUnitCore();
+ Result result = core.run(NoErrorWhenTheoryHasParameters.class);
+ assertEquals(0, result.getFailureCount());
+ }
+
+ @RunWith(Theories.class)
+ static public class ErrorWhenTestHasParametersDespiteTheories {
+ @DataPoint
+ public static int ZERO = 0;
+
+ @DataPoint
+ public static int ONE = 1;
+
+ @Test
+ public void testMethod(int i) {
+ assumeTrue(i < 1);
+ assertTrue(i < 1);
+ }
+ }
+
+ @Test public void testErrorWhenTestHasParametersDespiteTheories() {
+ JUnitCore core = new JUnitCore();
+ Result result = core.run(ErrorWhenTestHasParametersDespiteTheories.class);
+ assertEquals(1, result.getFailureCount());
+ String message = result.getFailures().get(0).getMessage();
+ assertThat(message, containsString("should have no parameters"));
+ }
}