Class QuarkusUnitTest

java.lang.Object
io.quarkus.test.QuarkusUnitTest
All Implemented Interfaces:
org.junit.jupiter.api.extension.AfterAllCallback, org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.Extension, org.junit.jupiter.api.extension.InvocationInterceptor, org.junit.jupiter.api.extension.ParameterResolver, org.junit.jupiter.api.extension.TestInstantiationAwareExtension

public class QuarkusUnitTest extends Object implements org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.AfterAllCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.InvocationInterceptor, org.junit.jupiter.api.extension.ParameterResolver
A test extension for testing Quarkus internals, not intended for end user consumption
  • Field Details

    • THE_BUILD_WAS_EXPECTED_TO_FAIL

      public static final String THE_BUILD_WAS_EXPECTED_TO_FAIL
      See Also:
    • started

      boolean started
  • Constructor Details

    • QuarkusUnitTest

      public QuarkusUnitTest()
  • Method Details

    • setExpectedException

      public QuarkusUnitTest setExpectedException(Class<? extends Throwable> expectedException)
    • setExpectedException

      public QuarkusUnitTest setExpectedException(Class<? extends Throwable> expectedException, boolean logMessage)
    • withSecuredConnection

      public static QuarkusUnitTest withSecuredConnection()
    • assertException

      public QuarkusUnitTest assertException(Consumer<Throwable> assertException)
    • getArchiveProducer

      public Supplier<org.jboss.shrinkwrap.api.spec.JavaArchive> getArchiveProducer()
    • setArchiveProducer

      public QuarkusUnitTest setArchiveProducer(Supplier<org.jboss.shrinkwrap.api.spec.JavaArchive> archiveProducer)
      Parameters:
      archiveProducer -
      Returns:
      self
      See Also:
    • withApplicationRoot

      public QuarkusUnitTest withApplicationRoot(Consumer<org.jboss.shrinkwrap.api.spec.JavaArchive> applicationRootConsumer)
      Customize the application root.
      Parameters:
      applicationRootConsumer -
      Returns:
      self
    • withEmptyApplication

      public QuarkusUnitTest withEmptyApplication()
      Use an empty application for the test
      Returns:
      self
    • addAdditionalDependency

      public QuarkusUnitTest addAdditionalDependency(org.jboss.shrinkwrap.api.spec.JavaArchive archive)
      Add the java archive as an additional dependency. This dependency is always considered an application archive, even if it would not otherwise be one.
      Parameters:
      archive -
      Returns:
      self
    • withAdditionalDependency

      public QuarkusUnitTest withAdditionalDependency(Consumer<org.jboss.shrinkwrap.api.spec.JavaArchive> dependencyConsumer)
      Add the java archive as an additional dependency. This dependency is always considered an application archive, even if it would not otherwise be one.
      Parameters:
      dependencyConsumer -
      Returns:
      self
    • addBuildChainCustomizer

      public QuarkusUnitTest addBuildChainCustomizer(Consumer<io.quarkus.builder.BuildChainBuilder> customizer)
    • addClassLoaderEventListener

      public QuarkusUnitTest addClassLoaderEventListener(io.quarkus.bootstrap.classloading.ClassLoaderEventListener listener)
    • setLogFileName

      public QuarkusUnitTest setLogFileName(String logFileName)
    • setLogRecordPredicate

      public QuarkusUnitTest setLogRecordPredicate(Predicate<LogRecord> predicate)
    • setFlatClassPath

      public QuarkusUnitTest setFlatClassPath(boolean flatClassPath)
      If this test should use a single ClassLoader to load all the classes. This is sometimes necessary when testing Quarkus itself, and we want the test classes and Quarkus classes to be in the same CL.
    • assertLogRecords

      public QuarkusUnitTest assertLogRecords(Consumer<List<LogRecord>> assertLogRecords)
    • setBeforeAllCustomizer

      public QuarkusUnitTest setBeforeAllCustomizer(Runnable beforeAllCustomizer)
    • setAfterAllCustomizer

      public QuarkusUnitTest setAfterAllCustomizer(Runnable afterAllCustomizer)
    • setForcedDependencies

      public QuarkusUnitTest setForcedDependencies(List<io.quarkus.maven.dependency.Dependency> forcedDependencies)
      Provides a convenient way to either add additional dependencies to the application (if it doesn't already contain a dependency), or override a version (if the dependency already exists)
    • getCommandLineParameters

      public String[] getCommandLineParameters()
    • setCommandLineParameters

      public QuarkusUnitTest setCommandLineParameters(String... commandLineParameters)
    • setAllowTestClassOutsideDeployment

      public QuarkusUnitTest setAllowTestClassOutsideDeployment(boolean allowTestClassOutsideDeployment)
      Normally access to any test classes that are not packaged in the deployment will result in a ClassNotFoundException. If this is true then access is allowed, which can be useful when testing shutdown behaviour.
    • addBootstrapCustomizer

      public QuarkusUnitTest addBootstrapCustomizer(Consumer<io.quarkus.bootstrap.app.QuarkusBootstrap.Builder> consumer)
      An advanced option that allows tests to customize the QuarkusBootstrap.Builder that will be used to create the CuratedApplication
    • interceptBeforeAllMethod

      public void interceptBeforeAllMethod(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:
      interceptBeforeAllMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
      Throws:
      Throwable
    • interceptBeforeEachMethod

      public void interceptBeforeEachMethod(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:
      interceptBeforeEachMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
      Throws:
      Throwable
    • interceptTestFactoryMethod

      public <T> T interceptTestFactoryMethod(org.junit.jupiter.api.extension.InvocationInterceptor.Invocation<T> invocation, org.junit.jupiter.api.extension.ReflectiveInvocationContext<Method> invocationContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext) throws Throwable
      Specified by:
      interceptTestFactoryMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
      Throws:
      Throwable
    • interceptAfterEachMethod

      public void interceptAfterEachMethod(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:
      interceptAfterEachMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
      Throws:
      Throwable
    • interceptAfterAllMethod

      public void interceptAfterAllMethod(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:
      interceptAfterAllMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
      Throws:
      Throwable
    • interceptTestMethod

      public void interceptTestMethod(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:
      interceptTestMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
      Throws:
      Throwable
    • 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:
      interceptTestTemplateMethod in interface org.junit.jupiter.api.extension.InvocationInterceptor
      Throws:
      Throwable
    • beforeAll

      public void beforeAll(org.junit.jupiter.api.extension.ExtensionContext extensionContext) throws Exception
      Specified by:
      beforeAll in interface org.junit.jupiter.api.extension.BeforeAllCallback
      Throws:
      Exception
    • afterAll

      public void afterAll(org.junit.jupiter.api.extension.ExtensionContext extensionContext) throws Exception
      Specified by:
      afterAll in interface org.junit.jupiter.api.extension.AfterAllCallback
      Throws:
      Exception
    • afterEach

      public void afterEach(org.junit.jupiter.api.extension.ExtensionContext context) throws Exception
      Specified by:
      afterEach in interface org.junit.jupiter.api.extension.AfterEachCallback
      Throws:
      Exception
    • beforeEach

      public void beforeEach(org.junit.jupiter.api.extension.ExtensionContext context) throws Exception
      Specified by:
      beforeEach in interface org.junit.jupiter.api.extension.BeforeEachCallback
      Throws:
      Exception
    • getAfterUndeployListener

      public Runnable getAfterUndeployListener()
    • setAfterUndeployListener

      public QuarkusUnitTest setAfterUndeployListener(Runnable afterUndeployListener)
    • withConfigurationResource

      public QuarkusUnitTest withConfigurationResource(String resourceName)
      Add an application.properties asset loaded from the specified resource file in the test JavaArchive.

      If an application.properties asset was already added explicitly to the archive (for instance through ResourceContainer.addAsResource(String)), this formet asset is removed and completely replaced by the one given here.

      Configuration properties added with overrideConfigKey(String, String) take precedence over the properties from the specified resource file.

      Parameters:
      resourceName -
      Returns:
      the test configuration
    • overrideConfigKey

      public QuarkusUnitTest overrideConfigKey(String propertyKey, String propertyValue)
      Overriden configuration properties take precedence over an application.properties asset added in the test JavaArchive.
      Parameters:
      propertyKey -
      propertyValue -
      Returns:
      the test configuration
    • overrideRuntimeConfigKey

      public QuarkusUnitTest overrideRuntimeConfigKey(String propertyKey, String propertyValue)
    • debugBytecode

      public QuarkusUnitTest debugBytecode(boolean debugBytecode)
      Controls bytecode-related debug dumping.

      When enabled, each Quarkus startup will have configuration properties such as quarkus.debug.generated-classes-dir set so that generated code gets dumped in target/debug, within a unique subdirectory for each test execution.

      Look at the logs of a particular test to identify the corresponding dump directory.

      Parameters:
      debugBytecode - true if debug should be enabled
      Returns:
      this, for method chaining.
    • traceCategories

      public QuarkusUnitTest traceCategories(String... categories)
      Enables trace logs for the given categories, during both build and runtime.
      Parameters:
      categories - The categories for which to enable trace logging.
      Returns:
      this, for method chaining.
    • supportsParameter

      public boolean supportsParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext) throws org.junit.jupiter.api.extension.ParameterResolutionException
      Specified by:
      supportsParameter in interface org.junit.jupiter.api.extension.ParameterResolver
      Throws:
      org.junit.jupiter.api.extension.ParameterResolutionException
    • resolveParameter

      public Object resolveParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext) throws org.junit.jupiter.api.extension.ParameterResolutionException
      We don't actually have to resolve the parameter (thus the default values in the implementation) since the class instance that is passed to JUnit isn't really used. The actual test instance that is used is the one that is pulled from Arc, which of course will already have its constructor parameters properly resolved
      Specified by:
      resolveParameter in interface org.junit.jupiter.api.extension.ParameterResolver
      Throws:
      org.junit.jupiter.api.extension.ParameterResolutionException