Skip to content

Commit

Permalink
Merge pull request #601 from skazzyy/master
Browse files Browse the repository at this point in the history
Fix for issue #499 Assumes in tests run by Theories
  • Loading branch information
David Saff committed Jan 10, 2013
2 parents 89b4004 + 178f854 commit 92a3f73
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/main/java/org/junit/experimental/theories/Theories.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,10 @@ private TestClass getTestClass() {
public void evaluate() throws Throwable {
runWithAssignment(Assignments.allUnassigned(
fTestMethod.getMethod(), getTestClass()));

if (successes == 0) {

//if this test method is not annotated with Theory, then no successes is a valid case
boolean hasTheoryAnnotation = fTestMethod.getAnnotation(Theory.class) != null;
if (successes == 0 && hasTheoryAnnotation) {
Assert
.fail("Never found parameters that satisfied method assumptions. Violated assumptions: "
+ fInvalidParameters);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package org.junit.tests.experimental.theories;

import org.junit.Assert;
import org.junit.Assume;
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.JUnitCore;
import org.junit.runner.Request;
import org.junit.runner.Result;
import org.junit.runner.RunWith;
import org.junit.runner.Runner;
import org.junit.runners.model.InitializationError;

@RunWith(Theories.class)
public class AssumingInTheoriesTest {

@Test
public void noTheoryAnnotationMeansAssumeShouldIgnore() {
Assume.assumeTrue(false);
}

@Test
public void theoryMeansOnlyAssumeShouldFail() throws InitializationError {
JUnitCore junitRunner = new JUnitCore();
Runner theoryRunner = new Theories(TheoryWithNoUnassumedParameters.class);
Request request = Request.runner(theoryRunner);
Result result = junitRunner.run(request);
Assert.assertEquals(1, result.getFailureCount());
}

/**
* Simple class that SHOULD fail because no parameters are met.
*/
public static class TheoryWithNoUnassumedParameters {

@DataPoint
public final static boolean FALSE = false;

@Theory
public void theoryWithNoUnassumedParameters(boolean value) {
Assume.assumeTrue(value);
}
}

}

0 comments on commit 92a3f73

Please sign in to comment.