Package org.spincast.testing.junitrunner
Class SpincastJUnitRunner
java.lang.Object
org.junit.runner.Runner
org.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod>
org.junit.runners.BlockJUnit4ClassRunner
org.spincast.testing.junitrunner.SpincastJUnitRunner
- All Implemented Interfaces:
org.junit.runner.Describable
,org.junit.runner.manipulation.Filterable
,org.junit.runner.manipulation.Orderable
,org.junit.runner.manipulation.Sortable
public class SpincastJUnitRunner
extends org.junit.runners.BlockJUnit4ClassRunner
Spincast JUnit Runner.
Only creates one instance of the test class for all its tests.
If the class implements BeforeAfterClassMethodsProvider
, then
a beforeClass()
and afterClass()
methods will be
called.
You can use the ExpectingBeforeClassException
annotation on the test
class to indicate that an exception is expected from the beforeClass()
method.
If you try to debug a test that only fails sometimes (those are the
worst!), you can use the @RepeatUntilFail
annotation on the test or on
its test class. This allows you to run the test or the whole test class multiple times.
You can also use @RepeatUntilSuccess
instead to repeat
the test class (or a single test) multiple time until it succeeds (or the maximum
number of tries is reached).
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected org.junit.runners.model.Statement
addCustomErrorHandling
(org.junit.runners.model.Statement baseStatement, org.junit.runners.model.FrameworkMethod method) protected void
addTestFailureListener
(org.junit.runner.notification.RunNotifier notifier) protected final List<org.junit.runners.model.FrameworkMethod>
JUnit calls that method to create an instance of the test class for each individual test.protected org.junit.runners.model.Statement
customizeStatement
(org.junit.runners.model.Statement statement, org.junit.runners.model.FrameworkMethod method) protected Integer
geRepeatUntilFailureAnnotationLoopsNbr
(RepeatUntilFailure repeatUntilFailureAnnotation) Will benull
if there if noRepeatUntilFailure
annotation.protected Integer
geRepeatUntilSuccessAnnotationLoopsNbr
(RepeatUntilSuccess repeatUntilSuccessAnnotation) Will benull
if there if noRepeatUntilSuccess
annotation.protected int
protected Integer
Will benull
if there if noRepeatUntilFailure
annotation.protected Integer
Will benull
if there if noRepeatUntilFailure
annotation.protected Integer
Will benull
if there if noRepeatUntilSuccess
annotation.protected Integer
Will benull
if there if noRepeatUntilSuccess
annotation.protected String
getName()
Test class display name.protected Integer
getRepeatUntilFailureAnnotationLoopsSleep
(RepeatUntilFailure repeatAnnotation) Will benull
if there if noRepeatUntilFailure
annotation.protected Integer
getRepeatUntilSuccessAnnotationLoopsSleep
(RepeatUntilSuccess repeatUntilSuccessAnnotation) Will benull
if there if noRepeatUntilSuccess
annotation.protected org.junit.runner.notification.RunNotifier
protected String
protected Object
protected Integer
Will benull
if there if noRepeatUntilFailure
annotation.protected Integer
Will benull
if there if noRepeatUntilFailure
annotation.protected Integer
Will benull
if there if noRepeatUntilSuccess
annotation.protected Integer
Will benull
if there if noRepeatUntilSuccess
annotation.protected boolean
boolean
boolean
protected boolean
protected boolean
protected void
logTestFailure
(org.junit.runner.notification.Failure failure) protected org.junit.runners.model.Statement
methodBlock
(org.junit.runners.model.FrameworkMethod method) void
run
(org.junit.runner.notification.RunNotifier notifier) Runs the test class.protected void
runChild
(org.junit.runners.model.FrameworkMethod method, org.junit.runner.notification.RunNotifier notifier) Runs a specific testprotected void
protected void
protected void
protected void
spincastTestError
(String testName, String errorMessage) protected void
spincastTestError
(String testName, Throwable exception) protected void
testFailureCustomHandling
(org.junit.runner.notification.Failure failure) protected void
protected void
protected void
protected void
Methods inherited from class org.junit.runners.BlockJUnit4ClassRunner
collectInitializationErrors, createTest, describeChild, getChildren, getTestRules, isIgnored, methodInvoker, possiblyExpectingExceptions, rules, testName, validateConstructor, validateFields, validateInstanceMethods, validateNoNonStaticInnerClass, validateOnlyOneConstructor, validateTestMethods, validateZeroArgConstructor, withAfters, withBefores, withPotentialTimeout
Methods inherited from class org.junit.runners.ParentRunner
childrenInvoker, classBlock, classRules, createTestClass, filter, getDescription, getRunnerAnnotations, getTestClass, order, runLeaf, setScheduler, sort, validatePublicVoidNoArgMethods, withAfterClasses, withBeforeClasses, withInterruptIsolation
Methods inherited from class org.junit.runner.Runner
testCount
-
Field Details
-
logger
protected static final org.slf4j.Logger logger -
SPINCAST_TEST_NAME_BEFORE_CLASS_ANNOTATIONS_VALIDATION
-
SPINCAST_TEST_NAME_AFTER_CLASS_ANNOTATIONS_VALIDATION
-
SPINCAST_TEST_NAME_BEFORE_CLASS_METHOD_VALIDATION
- See Also:
-
SPINCAST_TEST_NAME_AFTER_CLASS_METHOD_VALIDATION
- See Also:
-
SPINCAST_TEST_NAME_NO_TESTS_AND_NO_EXPECTION_EXCEPTION_ANNOTATION
-
SPINCAST_TEST_NAME_AFTER_CLASS_LOOPS_EXCEPTION
- See Also:
-
SPINCAST_TEST_NAME_REPEAT_ANNOTATIONS_VALIDATION
-
SPINCAST_TEST_NAME_EXPECTING_FAILURE_BUT_ONLY_SUCCESSES
-
-
Constructor Details
-
SpincastJUnitRunner
- Throws:
org.junit.runners.model.InitializationError
-
-
Method Details
-
getRunNotifier
protected org.junit.runner.notification.RunNotifier getRunNotifier() -
setIgnoreRemainingTests
protected void setIgnoreRemainingTests() -
isIgnoreRemainingTests
protected boolean isIgnoreRemainingTests() -
setExceptionInBeforeClass
protected void setExceptionInBeforeClass() -
isExceptionInBeforeClass
protected boolean isExceptionInBeforeClass() -
getCurrentClassLoopPosition
protected int getCurrentClassLoopPosition() -
createTest
JUnit calls that method to create an instance of the test class for each individual test. We change this behavior and always return the *same* instance of the test class: 'testClassInstance'.- Overrides:
createTest
in classorg.junit.runners.BlockJUnit4ClassRunner
- Throws:
Exception
-
getTestClassInstance
-
getName
Test class display name.- Overrides:
getName
in classorg.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod>
-
computeTestMethods
- Overrides:
computeTestMethods
in classorg.junit.runners.BlockJUnit4ClassRunner
-
run
public void run(org.junit.runner.notification.RunNotifier notifier) Runs the test class.- Overrides:
run
in classorg.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod>
-
runChild
protected void runChild(org.junit.runners.model.FrameworkMethod method, org.junit.runner.notification.RunNotifier notifier) Runs a specific test- Overrides:
runChild
in classorg.junit.runners.BlockJUnit4ClassRunner
-
methodBlock
protected org.junit.runners.model.Statement methodBlock(org.junit.runners.model.FrameworkMethod method) - Overrides:
methodBlock
in classorg.junit.runners.BlockJUnit4ClassRunner
-
customizeStatement
protected org.junit.runners.model.Statement customizeStatement(org.junit.runners.model.Statement statement, org.junit.runners.model.FrameworkMethod method) -
addCustomErrorHandling
protected org.junit.runners.model.Statement addCustomErrorHandling(org.junit.runners.model.Statement baseStatement, org.junit.runners.model.FrameworkMethod method) -
addTestFailureListener
protected void addTestFailureListener(org.junit.runner.notification.RunNotifier notifier) -
testFailureCustomHandling
protected void testFailureCustomHandling(org.junit.runner.notification.Failure failure) -
logTestFailure
protected void logTestFailure(org.junit.runner.notification.Failure failure) -
isLastInstanceOfThisTestToRun
protected boolean isLastInstanceOfThisTestToRun() -
runPreClassLoopsSpincastTests
protected void runPreClassLoopsSpincastTests() -
validateNoBeforeClassAnnotations
protected void validateNoBeforeClassAnnotations() -
validateNoAfterClassAnnotations
protected void validateNoAfterClassAnnotations() -
validateNoTestsAndNoExpectingBeforeClassExceptionAnnotation
protected void validateNoTestsAndNoExpectingBeforeClassExceptionAnnotation() -
validateTestClassRepeateAnnotations
protected void validateTestClassRepeateAnnotations() -
spincastTestError
-
spincastTestError
-
getStackTrace
-
isExpectingBeforeClassException
public boolean isExpectingBeforeClassException() -
isExpectingFailure
public boolean isExpectingFailure() -
getTestClassRepeatUntilFailureAnnotationLoopsNbr
Will benull
if there if noRepeatUntilFailure
annotation. -
getMethodRepeatUntilFailureAnnotationLoopsNbr
Will benull
if there if noRepeatUntilFailure
annotation. -
geRepeatUntilFailureAnnotationLoopsNbr
protected Integer geRepeatUntilFailureAnnotationLoopsNbr(RepeatUntilFailure repeatUntilFailureAnnotation) Will benull
if there if noRepeatUntilFailure
annotation. -
getTestClassRepeatUntilFailureAnnotationLoopsSleep
Will benull
if there if noRepeatUntilFailure
annotation. -
getMethodRepeatUntilFailureAnnotationLoopsSleep
Will benull
if there if noRepeatUntilFailure
annotation. -
getRepeatUntilFailureAnnotationLoopsSleep
Will benull
if there if noRepeatUntilFailure
annotation. -
getTestClassRepeatUntilSuccessAnnotationLoopsNbr
Will benull
if there if noRepeatUntilSuccess
annotation. -
getMethodRepeatUntilSuccessAnnotationLoopsNbr
Will benull
if there if noRepeatUntilSuccess
annotation. -
geRepeatUntilSuccessAnnotationLoopsNbr
protected Integer geRepeatUntilSuccessAnnotationLoopsNbr(RepeatUntilSuccess repeatUntilSuccessAnnotation) Will benull
if there if noRepeatUntilSuccess
annotation. -
getTestClassRepeatUntilSuccessAnnotationLoopsSleep
Will benull
if there if noRepeatUntilSuccess
annotation. -
getMethodRepeatUntilSuccessAnnotationLoopsSleep
Will benull
if there if noRepeatUntilSuccess
annotation. -
getRepeatUntilSuccessAnnotationLoopsSleep
protected Integer getRepeatUntilSuccessAnnotationLoopsSleep(RepeatUntilSuccess repeatUntilSuccessAnnotation) Will benull
if there if noRepeatUntilSuccess
annotation.
-