org.mockito.internal.junit.JUnitRule Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of securemock Show documentation
Show all versions of securemock Show documentation
Libraries for Elasticsearch
The newest version!
/*
* Copyright (c) 2018 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.junit;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
import org.mockito.Mockito;
import org.mockito.MockitoSession;
import org.mockito.internal.session.MockitoSessionLoggerAdapter;
import org.mockito.internal.util.MockitoLogger;
import org.mockito.quality.Strictness;
import org.mockito.junit.MockitoRule;
/**
* Internal implementation.
*/
public class JUnitRule implements MockitoRule {
private final MockitoLogger logger;
private Strictness strictness;
private MockitoSession session;
/**
* @param strictness how strict mocking / stubbing is concerned
*/
public JUnitRule(MockitoLogger logger, Strictness strictness) {
this.logger = logger;
this.strictness = strictness;
}
@Override
public Statement apply(final Statement base, final FrameworkMethod method, final Object target) {
return new Statement() {
public void evaluate() throws Throwable {
session = Mockito.mockitoSession()
.name(target.getClass().getSimpleName() + "." + method.getName())
.strictness(strictness)
.logger(new MockitoSessionLoggerAdapter(logger))
.initMocks(target)
.startMocking();
Throwable testFailure = evaluateSafely(base);
session.finishMocking(testFailure);
if (testFailure != null) {
throw testFailure;
}
}
private Throwable evaluateSafely(Statement base) {
try {
base.evaluate();
return null;
} catch (Throwable throwable) {
return throwable;
}
}
};
}
public MockitoRule silent() {
return strictness(Strictness.LENIENT);
}
public MockitoRule strictness(Strictness strictness) {
this.strictness = strictness;
// session is null when this method is called during initialization of
// the @Rule field of the test class
if (session != null) {
session.setStrictness(strictness);
}
return this;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy