Class ClassBasedTestDescriptor
- java.lang.Object
-
- org.junit.platform.engine.support.descriptor.AbstractTestDescriptor
-
- org.junit.jupiter.engine.descriptor.JupiterTestDescriptor
-
- org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor
-
- All Implemented Interfaces:
ResourceLockAware,TestClassAware,Validatable,Node<JupiterEngineExecutionContext>,TestDescriptor
- Direct Known Subclasses:
ClassTemplateTestDescriptor,ClassTestDescriptor,NestedClassTestDescriptor
@API(status=INTERNAL, since="5.5") public abstract class ClassBasedTestDescriptor extends JupiterTestDescriptor implements ResourceLockAware, TestClassAware, ValidatableTestDescriptorfor tests based on Java classes.- Since:
- 5.5
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classClassBasedTestDescriptor.ClassInfoprivate static classClassBasedTestDescriptor.LifecycleMethods-
Nested classes/interfaces inherited from class org.junit.jupiter.engine.descriptor.JupiterTestDescriptor
JupiterTestDescriptor.ExceptionHandlerInvoker<E extends org.junit.jupiter.api.extension.Extension>
-
Nested classes/interfaces inherited from interface org.junit.platform.engine.support.hierarchical.Node
Node.DynamicTestExecutor, Node.ExecutionMode, Node.Invocation<C extends EngineExecutionContext>, Node.SkipResult
-
Nested classes/interfaces inherited from interface org.junit.platform.engine.TestDescriptor
TestDescriptor.Type, TestDescriptor.Visitor
-
-
Field Summary
Fields Modifier and Type Field Description protected ClassBasedTestDescriptor.ClassInfoclassInfoprivate static InterceptingExecutableInvokerexecutableInvokerprivate ClassBasedTestDescriptor.LifecycleMethodslifecycleMethodsprivate org.junit.jupiter.api.extension.TestInstanceFactorytestInstanceFactory-
Fields inherited from class org.junit.jupiter.engine.descriptor.JupiterTestDescriptor
configuration
-
Fields inherited from class org.junit.platform.engine.support.descriptor.AbstractTestDescriptor
children
-
-
Constructor Summary
Constructors Constructor Description ClassBasedTestDescriptor(UniqueId uniqueId, java.lang.Class<?> testClass, java.lang.String displayName, JupiterConfiguration configuration)ClassBasedTestDescriptor(UniqueId uniqueId, java.lang.Class<?> testClass, java.util.function.Supplier<java.lang.String> displayNameSupplier, JupiterConfiguration configuration)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidafter(JupiterEngineExecutionContext context)Execute the after behavior of this node.JupiterEngineExecutionContextbefore(JupiterEngineExecutionContext context)Execute the before behavior of this node.voidcleanUp(JupiterEngineExecutionContext context)Clean up the suppliedcontextafter execution.private voidexecuteAndMaskThrowable(org.junit.jupiter.api.function.Executable executable)protected java.util.Optional<Node.ExecutionMode>getDefaultChildExecutionMode()ExclusiveResourceCollectorgetExclusiveResourceCollector()protected java.util.Optional<Node.ExecutionMode>getExplicitExecutionMode()java.lang.StringgetLegacyReportingName()Get the name of this descriptor in a format that is suitable for legacy reporting infrastructure — for example, for reporting systems built on the Ant-based XML reporting format for JUnit 4.java.lang.Class<?>getTestClass()TestDescriptor.TypegetType()Determine theTestDescriptor.Typeof this descriptor.private org.junit.jupiter.api.extension.TestInstancesinstantiateAndPostProcessTestInstance(JupiterEngineExecutionContext parentExecutionContext, ClassExtensionContext ourExtensionContext, ExtensionRegistry registry, JupiterEngineExecutionContext context)protected org.junit.jupiter.api.extension.TestInstancesinstantiateTestClass(java.util.Optional<org.junit.jupiter.api.extension.TestInstances> outerInstances, ExtensionRegistry registry, ExtensionContextSupplier extensionContext)protected abstract org.junit.jupiter.api.extension.TestInstancesinstantiateTestClass(JupiterEngineExecutionContext parentExecutionContext, ExtensionContextSupplier extensionContext, ExtensionRegistry registry, JupiterEngineExecutionContext context)private voidinvokeAfterAllCallbacks(JupiterEngineExecutionContext context)private voidinvokeAfterAllMethodExecutionExceptionHandlers(ExtensionRegistry registry, org.junit.jupiter.api.extension.ExtensionContext context, java.lang.Throwable throwable)private voidinvokeAfterAllMethods(JupiterEngineExecutionContext context)private voidinvokeBeforeAllCallbacks(JupiterEngineExecutionContext context)private voidinvokeBeforeAllMethodExecutionExceptionHandlers(ExtensionRegistry registry, org.junit.jupiter.api.extension.ExtensionContext context, java.lang.Throwable throwable)private voidinvokeBeforeAllMethods(JupiterEngineExecutionContext context)private voidinvokeMethodInExtensionContext(java.lang.reflect.Method method, org.junit.jupiter.api.extension.ExtensionContext context, ExtensionRegistry registry, InterceptingExecutableInvoker.ReflectiveInterceptorCall.VoidMethodInterceptorCall interceptorCall)private java.lang.ObjectinvokeTestClassConstructor(java.util.Optional<java.lang.Object> outerInstance, ExtensionRegistry registry, ExtensionContextSupplier extensionContext)private java.lang.ObjectinvokeTestInstanceFactory(java.util.Optional<java.lang.Object> outerInstance, ExtensionContextSupplier extensionContext)private voidinvokeTestInstancePostProcessors(java.lang.Object instance, ExtensionRegistry registry, ExtensionContextSupplier context)private voidinvokeTestInstancePreConstructCallbacks(org.junit.jupiter.api.extension.TestInstanceFactoryContext factoryContext, ExtensionRegistry registry, ExtensionContextSupplier context)private voidinvokeTestInstancePreDestroyCallbacks(JupiterEngineExecutionContext context)private booleanisPerClassLifecycle(JupiterEngineExecutionContext context)JupiterEngineExecutionContextprepare(JupiterEngineExecutionContext context)Must be overridden and return a new context with a newExtensionContextso cleanUp() does not accidentally close the parent context.private voidregisterAfterEachMethodAdapters(ExtensionRegistrar registrar)private voidregisterBeforeEachMethodAdapters(ExtensionRegistrar registrar)private voidregisterMethodsAsExtensions(java.util.List<java.lang.reflect.Method> methods, ExtensionRegistrar registrar, java.util.function.Function<java.lang.reflect.Method,org.junit.jupiter.api.extension.Extension> extensionSynthesizer)private org.junit.jupiter.api.extension.TestInstanceFactoryresolveTestInstanceFactory(ExtensionRegistry registry)voidsetDefaultChildExecutionMode(Node.ExecutionMode defaultChildExecutionMode)private AfterEachMethodAdaptersynthesizeAfterEachMethodAdapter(java.lang.reflect.Method method)private BeforeEachMethodAdaptersynthesizeBeforeEachMethodAdapter(java.lang.reflect.Method method)private TestInstancesProvidertestInstancesProvider(JupiterEngineExecutionContext parentExecutionContext, ClassExtensionContext ourExtensionContext)voidvalidate(DiscoveryIssueReporter reporter)Validate the state of this descriptor and report any issues found to the suppliedDiscoveryIssueReporter.protected voidvalidateClassTemplateInvocationLifecycleMethods(DiscoveryIssueReporter reporter)protected voidvalidateCoreLifecycleMethods(DiscoveryIssueReporter reporter)private voidvalidateDisplayNameAnnotation(DiscoveryIssueReporter reporter)private voidvalidateTags(DiscoveryIssueReporter reporter)-
Methods inherited from class org.junit.jupiter.engine.descriptor.JupiterTestDescriptor
copyIncludingDescendants, getExclusiveResources, getExecutionMode, getExecutionModeFromAnnotation, getTags, invokeExecutionExceptionHandlers, shouldBeSkipped, toExecutionMode, withUniqueId
-
Methods inherited from class org.junit.platform.engine.support.descriptor.AbstractTestDescriptor
addChild, equals, findByUniqueId, getChildren, getDisplayName, getParent, getSource, getTags, getUniqueId, hashCode, orderChildren, removeChild, removeFromHierarchy, setParent, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.junit.platform.engine.support.hierarchical.Node
around, execute, nodeFinished, nodeSkipped
-
Methods inherited from interface org.junit.jupiter.engine.descriptor.ResourceLockAware
determineExclusiveResources, determineOwnExclusiveResources, getResourceLocksProviderEvaluator
-
Methods inherited from interface org.junit.jupiter.engine.descriptor.TestClassAware
getEnclosingTestClasses
-
Methods inherited from interface org.junit.platform.engine.TestDescriptor
accept, addChild, findByUniqueId, getAncestors, getChildren, getDescendants, getDisplayName, getParent, getSource, getTags, getUniqueId, isContainer, isRoot, isTest, mayRegisterTests, orderChildren, prune, removeChild, removeFromHierarchy, setParent
-
-
-
-
Field Detail
-
executableInvoker
private static final InterceptingExecutableInvoker executableInvoker
-
classInfo
protected final ClassBasedTestDescriptor.ClassInfo classInfo
-
lifecycleMethods
private ClassBasedTestDescriptor.LifecycleMethods lifecycleMethods
-
testInstanceFactory
private org.junit.jupiter.api.extension.TestInstanceFactory testInstanceFactory
-
-
Constructor Detail
-
ClassBasedTestDescriptor
ClassBasedTestDescriptor(UniqueId uniqueId, java.lang.Class<?> testClass, java.util.function.Supplier<java.lang.String> displayNameSupplier, JupiterConfiguration configuration)
-
ClassBasedTestDescriptor
ClassBasedTestDescriptor(UniqueId uniqueId, java.lang.Class<?> testClass, java.lang.String displayName, JupiterConfiguration configuration)
-
-
Method Detail
-
getTestClass
public final java.lang.Class<?> getTestClass()
- Specified by:
getTestClassin interfaceTestClassAware
-
getType
public final TestDescriptor.Type getType()
Description copied from interface:TestDescriptorDetermine theTestDescriptor.Typeof this descriptor.- Specified by:
getTypein interfaceTestDescriptor- Returns:
- the descriptor type; never
null. - See Also:
TestDescriptor.isContainer(),TestDescriptor.isTest()
-
getLegacyReportingName
public final java.lang.String getLegacyReportingName()
Description copied from interface:TestDescriptorGet the name of this descriptor in a format that is suitable for legacy reporting infrastructure — for example, for reporting systems built on the Ant-based XML reporting format for JUnit 4.The default implementation delegates to
TestDescriptor.getDisplayName().- Specified by:
getLegacyReportingNamein interfaceTestDescriptor- Returns:
- the legacy reporting name; never
nullor blank
-
validate
public final void validate(DiscoveryIssueReporter reporter)
Description copied from interface:ValidatableValidate the state of this descriptor and report any issues found to the suppliedDiscoveryIssueReporter.- Specified by:
validatein interfaceValidatable
-
validateDisplayNameAnnotation
private void validateDisplayNameAnnotation(DiscoveryIssueReporter reporter)
-
validateCoreLifecycleMethods
protected void validateCoreLifecycleMethods(DiscoveryIssueReporter reporter)
-
validateClassTemplateInvocationLifecycleMethods
protected void validateClassTemplateInvocationLifecycleMethods(DiscoveryIssueReporter reporter)
-
validateTags
private void validateTags(DiscoveryIssueReporter reporter)
-
getExplicitExecutionMode
protected final java.util.Optional<Node.ExecutionMode> getExplicitExecutionMode()
- Overrides:
getExplicitExecutionModein classJupiterTestDescriptor
-
getDefaultChildExecutionMode
protected final java.util.Optional<Node.ExecutionMode> getDefaultChildExecutionMode()
- Overrides:
getDefaultChildExecutionModein classJupiterTestDescriptor
-
setDefaultChildExecutionMode
public final void setDefaultChildExecutionMode(Node.ExecutionMode defaultChildExecutionMode)
-
getExclusiveResourceCollector
public final ExclusiveResourceCollector getExclusiveResourceCollector()
- Specified by:
getExclusiveResourceCollectorin interfaceResourceLockAware
-
prepare
public final JupiterEngineExecutionContext prepare(JupiterEngineExecutionContext context)
Description copied from class:JupiterTestDescriptorMust be overridden and return a new context with a newExtensionContextso cleanUp() does not accidentally close the parent context.- Specified by:
preparein interfaceNode<JupiterEngineExecutionContext>- Specified by:
preparein classJupiterTestDescriptor- See Also:
Node.cleanUp(EngineExecutionContext)
-
before
public final JupiterEngineExecutionContext before(JupiterEngineExecutionContext context)
Description copied from interface:NodeExecute the before behavior of this node.This method will be called once before execution of this node.
The default implementation returns the supplied
contextunmodified.- Specified by:
beforein interfaceNode<JupiterEngineExecutionContext>- Parameters:
context- the context to execute in- Returns:
- the new context to be used for children of this node; never
null - See Also:
Node.execute(EngineExecutionContext, DynamicTestExecutor),Node.after(EngineExecutionContext)
-
after
public final void after(JupiterEngineExecutionContext context)
Description copied from interface:NodeExecute the after behavior of this node.This method will be called once after execution of this node.
The default implementation does nothing.
- Specified by:
afterin interfaceNode<JupiterEngineExecutionContext>- Parameters:
context- the context to execute in- See Also:
Node.before(C),Node.execute(C, org.junit.platform.engine.support.hierarchical.Node.DynamicTestExecutor)
-
cleanUp
public void cleanUp(JupiterEngineExecutionContext context) throws java.lang.Exception
Description copied from interface:NodeClean up the suppliedcontextafter execution.The default implementation does nothing.
- Specified by:
cleanUpin interfaceNode<JupiterEngineExecutionContext>- Overrides:
cleanUpin classJupiterTestDescriptor- Parameters:
context- the context to execute in- Throws:
java.lang.Exception- See Also:
Node.prepare(EngineExecutionContext)
-
resolveTestInstanceFactory
private org.junit.jupiter.api.extension.TestInstanceFactory resolveTestInstanceFactory(ExtensionRegistry registry)
-
testInstancesProvider
private TestInstancesProvider testInstancesProvider(JupiterEngineExecutionContext parentExecutionContext, ClassExtensionContext ourExtensionContext)
-
instantiateAndPostProcessTestInstance
private org.junit.jupiter.api.extension.TestInstances instantiateAndPostProcessTestInstance(JupiterEngineExecutionContext parentExecutionContext, ClassExtensionContext ourExtensionContext, ExtensionRegistry registry, JupiterEngineExecutionContext context)
-
instantiateTestClass
protected abstract org.junit.jupiter.api.extension.TestInstances instantiateTestClass(JupiterEngineExecutionContext parentExecutionContext, ExtensionContextSupplier extensionContext, ExtensionRegistry registry, JupiterEngineExecutionContext context)
-
instantiateTestClass
protected final org.junit.jupiter.api.extension.TestInstances instantiateTestClass(java.util.Optional<org.junit.jupiter.api.extension.TestInstances> outerInstances, ExtensionRegistry registry, ExtensionContextSupplier extensionContext)
-
invokeTestInstanceFactory
private java.lang.Object invokeTestInstanceFactory(java.util.Optional<java.lang.Object> outerInstance, ExtensionContextSupplier extensionContext)
-
invokeTestClassConstructor
private java.lang.Object invokeTestClassConstructor(java.util.Optional<java.lang.Object> outerInstance, ExtensionRegistry registry, ExtensionContextSupplier extensionContext)
-
invokeTestInstancePreConstructCallbacks
private void invokeTestInstancePreConstructCallbacks(org.junit.jupiter.api.extension.TestInstanceFactoryContext factoryContext, ExtensionRegistry registry, ExtensionContextSupplier context)
-
invokeTestInstancePostProcessors
private void invokeTestInstancePostProcessors(java.lang.Object instance, ExtensionRegistry registry, ExtensionContextSupplier context)
-
executeAndMaskThrowable
private void executeAndMaskThrowable(org.junit.jupiter.api.function.Executable executable)
-
invokeBeforeAllCallbacks
private void invokeBeforeAllCallbacks(JupiterEngineExecutionContext context)
-
invokeBeforeAllMethods
private void invokeBeforeAllMethods(JupiterEngineExecutionContext context)
-
invokeBeforeAllMethodExecutionExceptionHandlers
private void invokeBeforeAllMethodExecutionExceptionHandlers(ExtensionRegistry registry, org.junit.jupiter.api.extension.ExtensionContext context, java.lang.Throwable throwable)
-
invokeAfterAllMethods
private void invokeAfterAllMethods(JupiterEngineExecutionContext context)
-
invokeAfterAllMethodExecutionExceptionHandlers
private void invokeAfterAllMethodExecutionExceptionHandlers(ExtensionRegistry registry, org.junit.jupiter.api.extension.ExtensionContext context, java.lang.Throwable throwable)
-
invokeAfterAllCallbacks
private void invokeAfterAllCallbacks(JupiterEngineExecutionContext context)
-
invokeTestInstancePreDestroyCallbacks
private void invokeTestInstancePreDestroyCallbacks(JupiterEngineExecutionContext context)
-
isPerClassLifecycle
private boolean isPerClassLifecycle(JupiterEngineExecutionContext context)
-
registerBeforeEachMethodAdapters
private void registerBeforeEachMethodAdapters(ExtensionRegistrar registrar)
-
registerAfterEachMethodAdapters
private void registerAfterEachMethodAdapters(ExtensionRegistrar registrar)
-
registerMethodsAsExtensions
private void registerMethodsAsExtensions(java.util.List<java.lang.reflect.Method> methods, ExtensionRegistrar registrar, java.util.function.Function<java.lang.reflect.Method,org.junit.jupiter.api.extension.Extension> extensionSynthesizer)
-
synthesizeBeforeEachMethodAdapter
private BeforeEachMethodAdapter synthesizeBeforeEachMethodAdapter(java.lang.reflect.Method method)
-
synthesizeAfterEachMethodAdapter
private AfterEachMethodAdapter synthesizeAfterEachMethodAdapter(java.lang.reflect.Method method)
-
invokeMethodInExtensionContext
private void invokeMethodInExtensionContext(java.lang.reflect.Method method, org.junit.jupiter.api.extension.ExtensionContext context, ExtensionRegistry registry, InterceptingExecutableInvoker.ReflectiveInterceptorCall.VoidMethodInterceptorCall interceptorCall)
-
-