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.platform.commons.meta.API;
import org.junit.platform.commons.util.Preconditions;
import org.junit.platform.commons.util.ReflectionUtils;
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());

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

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

this.failIfAdapteeClassIsNotAssignableFromTargetClass();
}

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

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) {
try {
Method method = target.getClass().getDeclaredMethod(name, parameterTypes);
Method method = this.target.getClass().getDeclaredMethod(name, parameterTypes);
method.setAccessible(true);
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.member.AbstractRuleAnnotatedMember;
import org.junit.jupiter.migrationsupport.rules.member.RuleAnnotatedMember;
import org.junit.platform.commons.util.PreconditionViolationException;
import org.junit.rules.ErrorCollector;
import org.junit.rules.TemporaryFolder;
import org.junit.rules.TestRule;
Expand All @@ -31,10 +32,10 @@ void constructionWithAssignableArgumentsIsSuccessful() {

@Test
void constructionWithUnassignableArgumentsFails() {
Throwable throwable = assertThrows(IllegalStateException.class,
PreconditionViolationException exception = assertThrows(PreconditionViolationException.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");
}

Expand Down

0 comments on commit 535eab2

Please sign in to comment.