Package edu.berkeley.cs.jqf.junit5
Class JQFTestExtension
java.lang.Object
edu.berkeley.cs.jqf.junit5.JQFTestExtension
- All Implemented Interfaces:
org.junit.jupiter.api.extension.ExecutionCondition,org.junit.jupiter.api.extension.Extension,org.junit.jupiter.api.extension.InvocationInterceptor,org.junit.jupiter.api.extension.TestInstantiationAwareExtension,org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider
public final class JQFTestExtension
extends Object
implements org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider, org.junit.jupiter.api.extension.InvocationInterceptor, org.junit.jupiter.api.extension.ExecutionCondition
The Jupiter extension behind
FuzzTest.
It is a TestTemplateInvocationContextProvider: it turns one
@FuzzTest method into either a bounded set of regression invocations or a
single fuzzing invocation, depending on JUnit5FuzzConfig.isFuzzingMode().
- Regression: one invocation per input (saved corpus, seeds, and one
empty input). Each invocation injects its decoded arguments through a
GeneratedArgumentsResolverand runs the real test method under the Jupiter lifecycle viainvocation.proceed(). - Fuzzing: a single invocation whose method body is skipped; the whole
Zest campaign is driven through
JUnit5FuzzRunner, and the first failing input is rethrown as aJqfFindingso the node fails.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.junit.jupiter.api.extension.InvocationInterceptor
org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T extends Object>Nested classes/interfaces inherited from interface org.junit.jupiter.api.extension.TestInstantiationAwareExtension
org.junit.jupiter.api.extension.TestInstantiationAwareExtension.ExtensionContextScope -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionorg.junit.jupiter.api.extension.ConditionEvaluationResultevaluateExecutionCondition(org.junit.jupiter.api.extension.ExtensionContext context) voidinterceptTestTemplateMethod(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<Void> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext) booleanmayReturnZeroTestTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext context) Stream<org.junit.jupiter.api.extension.TestTemplateInvocationContext>provideTestTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext context) booleansupportsTestTemplate(org.junit.jupiter.api.extension.ExtensionContext context) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.junit.jupiter.api.extension.InvocationInterceptor
interceptAfterAllMethod, interceptAfterEachMethod, interceptBeforeAllMethod, interceptBeforeEachMethod, interceptDynamicTest, interceptDynamicTest, interceptTestClassConstructor, interceptTestFactoryMethod, interceptTestMethodMethods inherited from interface org.junit.jupiter.api.extension.TestInstantiationAwareExtension
getTestInstantiationExtensionContextScope
-
Constructor Details
-
JQFTestExtension
public JQFTestExtension()
-
-
Method Details
-
evaluateExecutionCondition
public org.junit.jupiter.api.extension.ConditionEvaluationResult evaluateExecutionCondition(org.junit.jupiter.api.extension.ExtensionContext context) - Specified by:
evaluateExecutionConditionin interfaceorg.junit.jupiter.api.extension.ExecutionCondition
-
supportsTestTemplate
public boolean supportsTestTemplate(org.junit.jupiter.api.extension.ExtensionContext context) - Specified by:
supportsTestTemplatein interfaceorg.junit.jupiter.api.extension.TestTemplateInvocationContextProvider
-
mayReturnZeroTestTemplateInvocationContexts
public boolean mayReturnZeroTestTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext context) - Specified by:
mayReturnZeroTestTemplateInvocationContextsin interfaceorg.junit.jupiter.api.extension.TestTemplateInvocationContextProvider
-
provideTestTemplateInvocationContexts
public Stream<org.junit.jupiter.api.extension.TestTemplateInvocationContext> provideTestTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext context) - Specified by:
provideTestTemplateInvocationContextsin interfaceorg.junit.jupiter.api.extension.TestTemplateInvocationContextProvider
-
interceptTestTemplateMethod
public void interceptTestTemplateMethod(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<Void> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext) throws Throwable - Specified by:
interceptTestTemplateMethodin interfaceorg.junit.jupiter.api.extension.InvocationInterceptor- Throws:
Throwable
-