Class TestExtensionsTracker


  • public class TestExtensionsTracker
    extends java.lang.Object
    Tracks registration of hooks and support objects during test initialization in order to log used additions (to simplify applied objects tracking). Also, tracks applied configuration overrides, but only after application start (the only way to show actually applied values).

    Also, tracks guicey extensions performance to simplify test performance problems resolution.

    Since:
    27.05.2022
    • Field Detail

      • GUICEY_EXTENSIONS_DEBUG

        public static final java.lang.String GUICEY_EXTENSIONS_DEBUG
        System property enables debug output for all used guicey extensions.
        See Also:
        Constant Field Values
      • debug

        public boolean debug
        Extension debug state.
      • extensionsSource

        protected final java.util.List<java.lang.String> extensionsSource
        Setup objects registration sources.
      • hooksSource

        protected final java.util.List<java.lang.String> hooksSource
        Hooks registration sources.
      • configModifierSource

        protected final java.util.List<java.lang.String> configModifierSource
        Configuration modifiers registration sources.
    • Constructor Detail

      • TestExtensionsTracker

        public TestExtensionsTracker()
    • Method Detail

      • setContextSetupObject

        public void setContextSetupObject​(java.lang.Class<? extends TestEnvironmentSetup> setup)
        Parameters:
        setup - context test extension
      • extensionsFromFields

        public final void extensionsFromFields​(java.util.List<AnnotatedField<EnableSetup,​TestEnvironmentSetup>> fields,
                                               java.lang.Object instance)
        Register setup objects from test fields.
        Parameters:
        fields - fields
        instance - test instance
      • extensionsFromAnnotation

        @SafeVarargs
        public final void extensionsFromAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> ann,
                                                   java.lang.Class<? extends TestEnvironmentSetup>... exts)
        Register setup objects from annotation.
        Parameters:
        ann - annotation type
        exts - setup objects
      • hooksFromFields

        public final void hooksFromFields​(java.util.List<AnnotatedField<EnableHook,​GuiceyConfigurationHook>> fields,
                                          boolean baseHooks,
                                          java.lang.Object instance)
        Register hooks from test fields.
        Parameters:
        fields - fields
        baseHooks - hooks from base class
        instance - test instance
      • hooksFromAnnotation

        @SafeVarargs
        public final void hooksFromAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> ann,
                                              java.lang.Class<? extends GuiceyConfigurationHook>... exts)
        Register hooks from annotation.
        Parameters:
        ann - annotation type
        exts - hooks
      • extensionInstances

        public final void extensionInstances​(TestEnvironmentSetup... exts)
        Register setup objects instances.
        Parameters:
        exts - setup objects
      • extensionClasses

        @SafeVarargs
        public final void extensionClasses​(java.lang.Class<? extends TestEnvironmentSetup>... exts)
        Register setup objects classes.
        Parameters:
        exts - setup object classes
      • lookupExtensions

        @SafeVarargs
        public final java.util.List<TestEnvironmentSetup> lookupExtensions​(TestEnvironmentSetup... exts)
        Register setup objects resolved with service loader.
        Parameters:
        exts - setup objects
        Returns:
        setup object instances
      • defaultExtensions

        @SafeVarargs
        public final java.util.List<TestEnvironmentSetup> defaultExtensions​(TestEnvironmentSetup... exts)
        Register default setup objects (which must be registered last due to AOP usage).
        Parameters:
        exts - setup objects
        Returns:
        setup objects instances
      • hookInstances

        public final void hookInstances​(GuiceyConfigurationHook... exts)
        Register hook instances.
        Parameters:
        exts - hooks
      • hookClasses

        @SafeVarargs
        public final void hookClasses​(java.lang.Class<? extends GuiceyConfigurationHook>... exts)
        Register hook classes.
        Parameters:
        exts - hooks
      • configModifiersFromAnnotation

        @SafeVarargs
        public final void configModifiersFromAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> ann,
                                                        java.lang.Class<? extends ConfigModifier>... exts)
        Register config modifiers from annotation.
        Parameters:
        ann - annotation type
        exts - modifiers
      • configModifierClasses

        @SafeVarargs
        public final void configModifierClasses​(java.lang.Class<? extends ConfigModifier>... mods)
        Register config modifier classes.
        Parameters:
        mods - modifiers
      • configModifierInstances

        public final void configModifierInstances​(ConfigModifier... exts)
        Register config modifier instances.
        Parameters:
        exts - modifiers
      • lifecyclePhase

        public void lifecyclePhase​(org.junit.jupiter.api.extension.ExtensionContext context,
                                   GuiceyTestTime phase)
        Indicate current phase.
        Parameters:
        context - junit context
        phase - phase
      • performanceTrack

        public void performanceTrack​(GuiceyTestTime name,
                                     java.time.Duration duration)
        Record performance.
        Parameters:
        name - tracker name
        duration - duration
      • enableDebugFromSystemProperty

        public void enableDebugFromSystemProperty()
        In some cases it might be simpler to use system property to enable debug: -Dguicey.extensions.debug=true.
      • logUsedHooksAndSetupObjects

        public void logUsedHooksAndSetupObjects​(java.lang.String configPrefix)
        Logs registered setup objects and hooks. Do nothing if no setup objects or hooks registered.
        Parameters:
        configPrefix - configuration prefix
      • logOverriddenConfigs

        public void logOverriddenConfigs​(java.lang.String configPrefix)
        Logs overridden configurations. Show values already applied to system properties.
        Parameters:
        configPrefix - configuration prefix
      • logGuiceyTestTime

        public void logGuiceyTestTime​(GuiceyTestTime phase,
                                      org.junit.jupiter.api.extension.ExtensionContext context)
        Record guicey time.
        Parameters:
        phase - phase
        context - junit context