Package com.opencqrs.framework.command
Annotation Interface CommandHandlingTest
@Target(TYPE)
@Retention(RUNTIME)
@Documented
@Inherited
@ExtendWith(org.springframework.test.context.junit.jupiter.SpringExtension.class)
@BootstrapWith(org.springframework.boot.test.context.SpringBootTestContextBootstrapper.class)
@OverrideAutoConfiguration(enabled=false)
@TypeExcludeFilters(com.opencqrs.framework.command.CommandHandlingTestExcludeFilter.class)
@ImportAutoConfiguration
public @interface CommandHandlingTest
Annotation that can be used for Spring Boot tests that focus only on CQRS
CommandHandlerDefinition
s in favor of initializing CommandHandlingTestFixture
manually. This
annotation provides a lazy
CommandHandlingTestFixture
per CommandHandlerDefinition
bean or CommandHandling
annotated
method, which may be auto-wired into test methods directly. The fixture is configured
with all StateRebuildingHandlerDefinition
s found within the context and the CommandHandlerDefinition
under test. A typical test annotated with CommandHandlingTest
may look like this:
@CommandHandlingTest public class BookAggregateTest { @Test public void bookAdded(@Autowired CommandHandlingTestFixture<BookAggregate, AddBookCommand, UUID> fixture) { UUID bookId = UUID.randomUUID(); fixture .givenNothing() .when( new AddBookCommand( bookId, "Tolkien", "LOTR", "DE234723432" ) ) .expectSuccessfulExecution() .expectSingleEvent( new BookAddedEvent( bookId, "Tolkien", "LOTR", "DE234723432" ) ); } }
Using this annotation will disable full auto-configuration and instead apply only configurations relevant to initialize CommandHandlingTestFixture
,
i.e. CommandHandlerDefinition
s and StateRebuildingHandlerDefinition
s, but not
Component
or Bean
s.
In order for this annotation to be able to initialize CommandHandlerDefinition
, CommandHandling
methods, and StateRebuildingHandlerDefinition
beans, these should be defined within a
CommandHandlerConfiguration
. Any dependent beans required for initializing them are typically provided by
defining them as @MockitoBean
within the
test annotated using this
.
- See Also: