Annotation Interface GraphQlTest


@Target(TYPE) @Retention(RUNTIME) @Documented @Inherited @BootstrapWith(org.springframework.boot.test.autoconfigure.graphql.GraphQlTestContextBootstrapper.class) @ExtendWith(org.springframework.test.context.junit.jupiter.SpringExtension.class) @OverrideAutoConfiguration(enabled=false) @TypeExcludeFilters(GraphQlTypeExcludeFilter.class) @AutoConfigureCache @AutoConfigureJson @AutoConfigureGraphQl @AutoConfigureGraphQlTester @ImportAutoConfiguration public @interface GraphQlTest
Annotation to perform GraphQL tests focusing on GraphQL request execution without a Web layer, and loading only a subset of the application configuration.

The annotation disables full auto-configuration and instead loads only components relevant to GraphQL tests, including the following:

  • @Controller
  • RuntimeWiringConfigurer
  • @JsonComponent
  • Converter
  • GenericConverter
  • DataFetcherExceptionResolver
  • Instrumentation
  • GraphQlSourceBuilderCustomizer

The annotation does not automatically load @Component, @Service, @Repository, and other beans.

By default, tests annotated with @GraphQlTest have a GraphQlTester configured. For more fine-grained control of the GraphQlTester, use @AutoConfigureGraphQlTester.

Typically @GraphQlTest is used in combination with @MockBean or @Import to load any collaborators and other components required for the tests.

To load your full application configuration instead and test via HttpGraphQlTester, consider using @SpringBootTest combined with @AutoConfigureHttpGraphQlTester.

Since:
2.7.0
See Also:
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    Class<?>[]
    Specifies the controllers to test.
    Class<?>[]
    Auto-configuration exclusions that should be applied for this test.
    org.springframework.context.annotation.ComponentScan.Filter[]
    A set of exclude filters which can be used to filter beans that would otherwise be added to the application context.
    org.springframework.context.annotation.ComponentScan.Filter[]
    A set of include filters which can be used to add otherwise filtered beans to the application context.
    Properties in form key=value that should be added to the Spring Environment before the test runs.
    boolean
    Determines if default filtering should be used with @SpringBootApplication.
    Class<?>[]
    Specifies the controllers to test.
  • Element Details

    • properties

      String[] properties
      Properties in form key=value that should be added to the Spring Environment before the test runs.
      Returns:
      the properties to add
      Default:
      {}
    • value

      @AliasFor("controllers") Class<?>[] value
      Specifies the controllers to test. This is an alias of controllers() which can be used for brevity if no other attributes are defined. See controllers() for details.
      Returns:
      the controllers to test
      See Also:
      Default:
      {}
    • controllers

      @AliasFor("value") Class<?>[] controllers
      Specifies the controllers to test. May be left blank if all @Controller beans should be added to the application context.
      Returns:
      the controllers to test
      See Also:
      Default:
      {}
    • useDefaultFilters

      boolean useDefaultFilters
      Determines if default filtering should be used with @SpringBootApplication. By default, only @Controller (when no explicit controllers are defined), RuntimeWiringConfigurer, @JsonComponent, Converter, GenericConverter, DataFetcherExceptionResolver, Instrumentation and GraphQlSourceBuilderCustomizer beans are included.
      Returns:
      if default filters should be used
      See Also:
      Default:
      true
    • includeFilters

      org.springframework.context.annotation.ComponentScan.Filter[] includeFilters
      A set of include filters which can be used to add otherwise filtered beans to the application context.
      Returns:
      include filters to apply
      Default:
      {}
    • excludeFilters

      org.springframework.context.annotation.ComponentScan.Filter[] excludeFilters
      A set of exclude filters which can be used to filter beans that would otherwise be added to the application context.
      Returns:
      exclude filters to apply
      Default:
      {}
    • excludeAutoConfiguration

      @AliasFor(annotation=org.springframework.boot.autoconfigure.ImportAutoConfiguration.class, attribute="exclude") Class<?>[] excludeAutoConfiguration
      Auto-configuration exclusions that should be applied for this test.
      Returns:
      auto-configuration exclusions to apply
      Default:
      {}