Git Product home page Git Product logo

axon-testing's Introduction

holixon

Organization stats

github-metrics.svg

axon-testing's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar jangalinski avatar stoerti avatar zambrovski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

axon-testing's Issues

Support assertions on saga state

SagaFixtures internally have an InMemorySagaStore that keeps the state of the saga under test.
It is a private field and not accessible.

It would be great if we could access/load the current saga state to make assertions (not restricted to hamcrest).

jgiven/core/saga expectDispatchedCommands

GIVEN
      .noPriorActivity()

    WHEN
      .aggregatePublishes(
        orderId().toString(),
        emailNotificationPreparedEvent()
      )

    THEN
      .expectDispatchedCommands(sendEmailCommand(), completeEmailNotificationDomainCommand())

fails with

java.lang.IllegalArgumentException: Can not set java.lang.String field *.command.SendEmailCommand.subject to *.command.CompleteEmailNotificationDomainCommand

Probably JGivens @table annotation cannot work with commands of different types.

fix reified type for aggregate/saga fixture builder

The AxonJgiven factory methods for builders did not use reified types correctly ... fix them to support the full power of kotlin.

Also: move the Java factory methods to AxonJgivenJava so the kotlin importer does not get confused.

Potentially breaking if anyone used this from Java.

Drop support for junit4

We have a dedicated module to support axon, jgiven and junit4.

As junit5 is completely established everywhere, we should drop this ... especially as we have an asymetry ... upcaster testing does not support junit4, so it is either dropping for jgiven or establishing for upcasters.

AggregateFixture: support registrations of CorrelationDataProviders

Scenario

The framework supports CorrelationDataProviders that automatically propagates MetaData properties to all messages.

I want to test these data providers.

Current Behaviour

With the fixture based test setup, this is not supported directly.

Wanted Behaviour

  • Register data providers using fixture builder.
  • Automatically register the MessageOrigin/Tracing provider.

Possible Workarounds

  • manually register a CorrelationDataInterceptor on the commandBus after the fixture was created

Upgrade axon framework 4.7.x

see #271

I would suggest switching to a semVer model that reflects the framework version this lib is build for. 4.7.0.0

  • change version
  • add README

dependency mismatch: bytebuddy

We have multiple versions the classpath/overall external-libraries

  • net.bytebuddy
    • byte-buddy
      • 1.12.21
      • 1.14.7

we should analyse where these come from and use exclusions (or explicit declaration) to force common latest version.

support structured list of expected events and commands

Scenario

When we expect a vararg collection of events or commands, we want them rendered nicely in the jgiven report.

Current Behaviour

with #161 we removed the @table annotation because it could not (out of the box?) deal with different types.
So with version 0.2.0 we just get a string listing all events/commands by toString() and joinToString()

Wanted Behaviour

It would be nice to quickly see from a jgiven report which events/commands where used to have a table like rendering.
We should explore if we can achieve this by using custom formatters in jgiven.

Problem: We know nothing about the expected events/commands up front, so the approach will probably have to be very generic like
| type | toString-value |

Possible Workarounds

leave as is

Create JUnit5 Support for Upcaster Testing

Scenario

  • extension version: 4.7.x
  • Axon Framework version: 4.7.x
  • Description of your use case: I want to be able to convenient test upcaster using JUnit 5

Current Behaviour

No support

Wanted Behaviour

JUnit suppot for reading in events from files and construction of intermediate representation.

Possible Workarounds

Manual code duplication

Correct assertions output for intermediate representation

The failure messages should be improved.

  • use XmlAssert and JsonAssert for intermediate representation asserts
  • for the ObjectAssert the "expected ..., but got..." should be always available.
  • isEqualDeserializedTo has a copy-paste error message
  • hasTypeRevision has a copy-paste error message
  • hasType has copy-paste error message

dependency mismatch: opentest4j

We have multiple versions the classpath/overall external-libraries

  • org.opentest4j
    • opentest4j
      • 1.2.0
      • 1.3.0

we should analyse where these come from and use exclusions (or explicit declaration) to force common latest version.

Fix SemVer. - 4.8.3.0

the versioning of this lib is : first three digits: axon testing version. last digit: build/version count of this lib.

Currently, the 4.8.0.0 release internally uses axon-framework 4.7.5

more robust error handling.

When something fails "behind the scenes" (events can not be created because they are invalid, axon setup not working, ...) all tests become just "red", instead single steps failing.
It can be hard to debug/analyse what actually failed.

Typical exception: GIVEN/WHEN had issues, jgiven continues and has invalid state:

15:00:18.308 [main] ERROR c.t.jgiven.impl.ScenarioExecutor - The field resultValidator is required but has not been provided.
com.tngtech.jgiven.exception.JGivenMissingRequiredScenarioStateException: The field resultValidator is required but has not been provided.
	at com.tngtech.jgiven.impl.inject.ValueInjector.updateValues(ValueInjector.java:115)
	at com.tngtech.jgiven.impl.ScenarioExecutor.updateScenarioState(ScenarioExecutor.java:239)
	at com.tngtech.jgiven.impl.ScenarioExecutor.access$500(ScenarioExecutor.java:41)
	at com.tngtech.jgiven.impl.ScenarioExecutor$StageTransitionHandlerImpl.enterStage(ScenarioExecutor.java:172)
	at com.tngtech.jgiven.impl.intercept.StepInterceptorImpl.intercept(StepInterceptorImpl.java:80)
	at com.tngtech.jgiven.impl.intercept.ByteBuddyMethodInterceptor.interceptSuper(ByteBuddyMethodInterceptor.java:37)

Ideas:

  • wrap the calls to axon-test/ResultValidator in try/catch
  • instead of lateinit try to create usable scenarioStates/stateHolders so we can continue the test runs even if we can not really assert state.

dependency mismatch: org.slf4j

We have multiple versions the classpath/overall external-libraries

  • org.slf4j
    • slf4j-api
      • 2.0.6
      • 2.0.7
      • 2.0.9
    • slf4j-simple
      • 2.0.9

we should analyse where these come from and use exclusions (or explicit declaration) to force common latest version.

ensure that given/andGiven are called correctly

The AggregateTestFixture is both: given and when stage. Depending on what happened before, calls to given events/given commands in our jgiven stages can have side effects (ensureRepositoryConfiguration, finalizeAggregateConfiguration, clearGivenWhenState).

In our Given-Stage we must ensure that we call the given methods first and then the andGiven methods.

maven: deprecated compiler flag

using Kotlin 1.8.21 we get

[WARNING] '-Xjvm-default=enable' is deprecated, please use '-Xjvm-default=all|all-compatibility'

we should fix the flag

AggregateTestFixture can not be configured

Steps to reproduce

from the example:

@ProvidedScenarioState
  private final FixtureConfiguration<BankAccountAggregate> fixture = new AggregateTestFixture<>(BankAccountAggregate.class)
    .registerInjectableResource(Mockito.mock(MyService.class));

Due to a strange behavior of the original axon-test, when I use fluent configuration methods on the AggregateTestFixture, its type changes to the super type FixtureConfiguration.

But the JGiven Stages we provide, are relying on

  @ExpectedScenarioState(required = true)
  private lateinit var fixture: AggregateTestFixture<T>

So jgiven tests fail as soon as we start to use non-trivial set ups.

  • extension version: 0.0.1
  • Axon Framework version: 4.4.8
  • JDK version: 11

Expected behaviour

I can use the fluent configuration of my test fixture and still get it injected in my stages correctly.

Actual behaviour

com.tngtech.jgiven.exception.JGivenMissingRequiredScenarioStateException: The field fixture is required but has not been provided.

fix deprecations on AxonTest Fixtures

Using 4.7.x we get

[WARNING] jgiven/core/src/main/kotlin/aggregate/AggregateFixtureThen.kt: (194, 5) 'expectDeadlinesMet(vararg Any!): ResultValidator<T!>!' is deprecated. Deprecated in Java
[WARNING] jgiven/core/src/main/kotlin/aggregate/AggregateFixtureThen.kt: (202, 5) 'expectDeadlinesMetMatching(Matcher<out MutableList<in DeadlineMessage<*>!>!>!): ResultValidator<T!>!' is deprecated. Deprecated in Java
[WARNING] jgiven/core/src/main/kotlin/aggregate/AggregateFixtureWhen.kt: (47, 28) 'whenThenTimeAdvancesTo(Instant!): ResultValidator<T!>!' is deprecated. Deprecated in Java
[WARNING] jgiven/core/src/main/kotlin/aggregate/AggregateFixtureWhen.kt: (55, 28) 'whenThenTimeElapses(Duration!): ResultValidator<T!>!' is deprecated. Deprecated in Java
[WARNING] jgiven/core/src/main/kotlin/saga/SagaFixtureThen.kt: (296, 15) 'expectDeadlinesMet(vararg Any!): FixtureExecutionResult!' is deprecated. Deprecated in Java

we should check and use correct methods.

move gift card example to fixtures

fixtures can be used in test scope of libs and examples, so as already done with the bankaccount/moneytranfser, gift card should be moved.

GIVEN.state() does not work

Steps to reproduce

  • extension version: 0.4.0
  • Steps: (what exactly are you doing with the above reproducer?)

When I use given().state(...) to setup the internal state of the aggregate, the test fails with the exception below. As there where no events involved, this violates the "load aggregate" contract.

Expected behaviour

initialize the internal state directly, instead of applying a bunch of events.

Actual behaviour

failure, see below.

org.axonframework.test.FixtureExecutionException: Failed to execute givenCommands

	at org.axonframework.test.aggregate.AggregateTestFixture$ExecutionExceptionAwareCallback.onResult(AggregateTestFixture.java:1008)
	at org.axonframework.commandhandling.WrappedCommandCallback.onResult(WrappedCommandCallback.java:51)
	at org.axonframework.commandhandling.MonitorAwareCallback.onResult(MonitorAwareCallback.java:57)
	at org.axonframework.commandhandling.SimpleCommandBus.handle(SimpleCommandBus.java:204)
	at org.axonframework.commandhandling.SimpleCommandBus.doDispatch(SimpleCommandBus.java:165)
	at org.axonframework.commandhandling.SimpleCommandBus.lambda$dispatch$2(SimpleCommandBus.java:131)
	at org.axonframework.tracing.Span.run(Span.java:101)
	at org.axonframework.commandhandling.SimpleCommandBus.dispatch(SimpleCommandBus.java:125)
	at org.axonframework.test.aggregate.AggregateTestFixture.lambda$andGivenCommands$1(AggregateTestFixture.java:400)
	at org.axonframework.test.aggregate.AggregateTestFixture.executeAtSimulatedTime(AggregateTestFixture.java:413)
	at org.axonframework.test.aggregate.AggregateTestFixture.andGivenCommands(AggregateTestFixture.java:400)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$commands$1.invoke(AggregateFixtureGiven.kt:62)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$commands$1.invoke(AggregateFixtureGiven.kt:57)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven.execute(AggregateFixtureGiven.kt:119)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven.commands(AggregateFixtureGiven.kt:57)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$ByteBuddy$Rkav65nZ.commands$accessor$CbQpRjs8(Unknown Source)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$ByteBuddy$Rkav65nZ$auxiliary$zFricsMZ.call(Unknown Source)
	at com.tngtech.jgiven.impl.intercept.StepInterceptorImpl.doIntercept(StepInterceptorImpl.java:111)
	at com.tngtech.jgiven.impl.intercept.StepInterceptorImpl.intercept(StepInterceptorImpl.java:82)
	at com.tngtech.jgiven.impl.intercept.ByteBuddyMethodInterceptor.interceptSuper(ByteBuddyMethodInterceptor.java:37)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$ByteBuddy$Rkav65nZ.commands(Unknown Source)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven.commands(AggregateFixtureGiven.kt:50)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$ByteBuddy$Rkav65nZ.commands$accessor$CbQpRjs8(Unknown Source)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$ByteBuddy$Rkav65nZ$auxiliary$5NzUNlV0.call(Unknown Source)
	at com.tngtech.jgiven.impl.intercept.StepInterceptorImpl.doIntercept(StepInterceptorImpl.java:111)
	at com.tngtech.jgiven.impl.intercept.StepInterceptorImpl.intercept(StepInterceptorImpl.java:82)
	at com.tngtech.jgiven.impl.intercept.ByteBuddyMethodInterceptor.interceptSuper(ByteBuddyMethodInterceptor.java:37)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$ByteBuddy$Rkav65nZ.commands(Unknown Source)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven.command(AggregateFixtureGiven.kt:43)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$ByteBuddy$Rkav65nZ.command$accessor$CbQpRjs8(Unknown Source)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$ByteBuddy$Rkav65nZ$auxiliary$oYo2wzn9.call(Unknown Source)
	at com.tngtech.jgiven.impl.intercept.StepInterceptorImpl.doIntercept(StepInterceptorImpl.java:111)
	at com.tngtech.jgiven.impl.intercept.StepInterceptorImpl.intercept(StepInterceptorImpl.java:82)
	at com.tngtech.jgiven.impl.intercept.ByteBuddyMethodInterceptor.interceptSuper(ByteBuddyMethodInterceptor.java:37)
	at io.holixon.axon.testing.jgiven.aggregate.AggregateFixtureGiven$ByteBuddy$Rkav65nZ.command(Unknown Source)
	at com.fiege.oms.installationpartner.command.domain.model.aggregate.InstallationPartnerAggregateTest$InstallerEntityTest.remove a serviceArea from installer is idempotent(InstallationPartnerAggregateTest.kt:737)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Caused by: org.axonframework.modelling.command.AggregateNotFoundException: No 'given' events were configured for this aggregate, nor have any events been stored.
	at org.axonframework.test.aggregate.AggregateTestFixture$RecordingEventStore.readEvents(AggregateTestFixture.java:913)
	at org.axonframework.eventsourcing.EventSourcingRepository.readEvents(EventSourcingRepository.java:169)
	at org.axonframework.eventsourcing.EventSourcingRepository.doLoadWithLock(EventSourcingRepository.java:129)
	at org.axonframework.eventsourcing.EventSourcingRepository.doLoadWithLock(EventSourcingRepository.java:55)
	at org.axonframework.modelling.command.LockingRepository.doLoad(LockingRepository.java:137)
	at org.axonframework.modelling.command.LockingRepository.doLoad(LockingRepository.java:60)
	at org.axonframework.modelling.command.AbstractRepository.lambda$null$6(AbstractRepository.java:141)
	at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1220)
	at org.axonframework.modelling.command.AbstractRepository.lambda$load$8(AbstractRepository.java:140)
	at org.axonframework.tracing.Span.runSupplier(Span.java:163)
	at org.axonframework.modelling.command.AbstractRepository.load(AbstractRepository.java:137)
	at org.axonframework.test.aggregate.AggregateTestFixture$IdentifierValidatingRepository.load(AggregateTestFixture.java:768)
	at org.axonframework.modelling.command.AggregateAnnotationCommandHandler$AggregateCommandHandler.handle(AggregateAnnotationCommandHandler.java:568)
	at org.axonframework.modelling.command.AggregateAnnotationCommandHandler$AggregateCommandHandler.handle(AggregateAnnotationCommandHandler.java:557)
	at org.axonframework.messaging.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:57)
	at org.axonframework.messaging.unitofwork.DefaultUnitOfWork.executeWithResult(DefaultUnitOfWork.java:77)
	at org.axonframework.commandhandling.SimpleCommandBus.lambda$handle$4(SimpleCommandBus.java:201)
	at org.axonframework.tracing.Span.runSupplier(Span.java:163)
	at org.axonframework.commandhandling.SimpleCommandBus.handle(SimpleCommandBus.java:192)
	... 111 more

Sorry, just a question

This library looks interesting, but I was wondering, does it work with axon-spring-boot?

Thanks, Andy.

dependency mismatch: junit5

We have multiple versions the classpath/overall external-libraries

  • org.junit.jupiter
    • junit-jupiter
    • 5.9.1
    • 5.10.0
    • junit-jupiter-api
    • 5.9.1
    • 5.10.0
    • junit-jupiter-engine
    • 5.9.1
    • 5.10.0
    • junit-jupiter-params
    • 5.9.1
    • 5.10.0
  • org.junit.platform
    • junit-platform-commons
      • 1.9.1
      • 1.0.0
    • junit-platform-engine
      • 1.9.1
      • 1.0.0

we should analyse where these come from and use exclusions (or explicit declaration) to force common latest version.

support assertions on expectedEvents

The default "expectEvent(s)" does an equals comparison of the caught events and passed expected events, which fails when values are set in the commandhandler that are not under control of the caller (generated aggregateId, generated timestamps, ...).

Idea: capture the actual events as in mockitos ArgumentCaptor and then assert manually on that list of events.

Create assertions for upcaster testing

In order to assert results of upcaster I want to do it directly using specific assersions, instead of unpackaging the result every time in the test code.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.