Skip to content

Commit

Permalink
Use Preconditions instead of throwing IllegalStateException
Browse files Browse the repository at this point in the history
  • Loading branch information
marcphilipp committed Nov 25, 2016
1 parent 2ed0e2c commit 535eab2
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 12 deletions.
Expand Up @@ -17,6 +17,7 @@


import org.junit.jupiter.migrationsupport.rules.member.RuleAnnotatedMember; import org.junit.jupiter.migrationsupport.rules.member.RuleAnnotatedMember;
import org.junit.platform.commons.meta.API; import org.junit.platform.commons.meta.API;
import org.junit.platform.commons.util.Preconditions;
import org.junit.platform.commons.util.ReflectionUtils; import org.junit.platform.commons.util.ReflectionUtils;
import org.junit.rules.TestRule; import org.junit.rules.TestRule;


Expand All @@ -26,18 +27,11 @@ public abstract class AbstractTestRuleAdapter implements GenericBeforeAndAfterAd
private static final Logger LOG = Logger.getLogger(AbstractTestRuleAdapter.class.getName()); private static final Logger LOG = Logger.getLogger(AbstractTestRuleAdapter.class.getName());


protected final TestRule target; protected final TestRule target;
protected final Class<? extends TestRule> adapteeClass;


public AbstractTestRuleAdapter(RuleAnnotatedMember annotatedMember, Class<? extends TestRule> adapteeClass) { public AbstractTestRuleAdapter(RuleAnnotatedMember annotatedMember, Class<? extends TestRule> adapteeClass) {
this.target = annotatedMember.getTestRuleInstance(); this.target = annotatedMember.getTestRuleInstance();
this.adapteeClass = adapteeClass; Preconditions.condition(adapteeClass.isAssignableFrom(this.target.getClass()),

() -> adapteeClass + " is not assignable from " + this.target.getClass());
this.failIfAdapteeClassIsNotAssignableFromTargetClass();
}

private void failIfAdapteeClassIsNotAssignableFromTargetClass() {
if (!this.adapteeClass.isAssignableFrom(this.target.getClass()))
throw new IllegalStateException(this.adapteeClass + " is not assignable from " + this.target.getClass());
} }


protected Object executeMethod(String name) { protected Object executeMethod(String name) {
Expand All @@ -46,7 +40,7 @@ protected Object executeMethod(String name) {


protected Object executeMethod(String name, Class<?>[] parameterTypes, Object... arguments) { protected Object executeMethod(String name, Class<?>[] parameterTypes, Object... arguments) {
try { try {
Method method = target.getClass().getDeclaredMethod(name, parameterTypes); Method method = this.target.getClass().getDeclaredMethod(name, parameterTypes);
method.setAccessible(true); method.setAccessible(true);
return ReflectionUtils.invokeMethod(method, target, arguments); return ReflectionUtils.invokeMethod(method, target, arguments);
} }
Expand Down
Expand Up @@ -17,6 +17,7 @@
import org.junit.jupiter.migrationsupport.rules.adapter.AbstractTestRuleAdapter; import org.junit.jupiter.migrationsupport.rules.adapter.AbstractTestRuleAdapter;
import org.junit.jupiter.migrationsupport.rules.member.AbstractRuleAnnotatedMember; import org.junit.jupiter.migrationsupport.rules.member.AbstractRuleAnnotatedMember;
import org.junit.jupiter.migrationsupport.rules.member.RuleAnnotatedMember; import org.junit.jupiter.migrationsupport.rules.member.RuleAnnotatedMember;
import org.junit.platform.commons.util.PreconditionViolationException;
import org.junit.rules.ErrorCollector; import org.junit.rules.ErrorCollector;
import org.junit.rules.TemporaryFolder; import org.junit.rules.TemporaryFolder;
import org.junit.rules.TestRule; import org.junit.rules.TestRule;
Expand All @@ -31,10 +32,10 @@ void constructionWithAssignableArgumentsIsSuccessful() {


@Test @Test
void constructionWithUnassignableArgumentsFails() { void constructionWithUnassignableArgumentsFails() {
Throwable throwable = assertThrows(IllegalStateException.class, PreconditionViolationException exception = assertThrows(PreconditionViolationException.class,
() -> new TestableTestRuleAdapter(new SimpleRuleAnnotatedMember(new TemporaryFolder()), Verifier.class)); () -> new TestableTestRuleAdapter(new SimpleRuleAnnotatedMember(new TemporaryFolder()), Verifier.class));


assertEquals(throwable.getMessage(), assertEquals(exception.getMessage(),
"class org.junit.rules.Verifier is not assignable from class org.junit.rules.TemporaryFolder"); "class org.junit.rules.Verifier is not assignable from class org.junit.rules.TemporaryFolder");
} }


Expand Down

0 comments on commit 535eab2

Please sign in to comment.