NServiceBus icon indicating copy to clipboard operation
NServiceBus copied to clipboard

AcceptanceTest Sources that contain relevant tests for persistences

Open danielmarbach opened this issue 4 years ago • 0 comments

Most persistences run in addition to the persistence tests the acceptance tests too. Yet many of the acceptance tests are not really relevant for the persistence and have a big impact on the test execution time which greatly hinders the productivity due to the long test feedback cycles. To address that, persistences then start removing certain groups of acceptance tests like the following

  <ItemGroup>
    <Compile Remove="\**\ConfigureEndpointInMemoryPersistence.cs" />
    <Compile Remove="\**\ConfigureEndpointLearningPersistence.cs" />
    <Compile Remove="\**\ConventionEnforcementTests.cs" />
    <Compile Remove="\**\DeterministicGuid.cs" />
    <Compile Remove="\**\Audit\*.*" />
    <Compile Remove="\**\Correlation\*.*" />
    <Compile Remove="\**\DataBus\*.*" />
    <Compile Remove="\**\DelayedDelivery\*.*" />
    <Compile Remove="\**\Forwarding\*.*" />
    <Compile Remove="\**\MessageId\*.*" />
    <Compile Remove="\**\Pipeline\*.*" />
    <Compile Remove="\**\Recoverability\*.*" />
    <Compile Remove="\**\Routing\**\*.*" />
    <Compile Remove="\**\Satellites\*.*" />
    <Compile Remove="\**\Scheduling\*.*" />
    <Compile Remove="\**\SelfVerification\*.*" />
    <Compile Remove="\**\Serialization\*.*" />
    <Compile Remove="\**\Timeout\*.*" />
    <Compile Remove="\**\TimeToBeReceived\*.*" />
    <Compile Remove="\**\Tx\**\*.*" />
    <Compile Remove="\**\Versioning\*.*" />
  </ItemGroup>

This is not ideal because the exclusions are managed by the downstream and not by core itself. It would be better if core had a dedicated acceptance test source package that contains relevant tests for the persistence and the storages that need to be supported from the core perspective. For example, the source package could contain the following ATTs

  • Outbox
  • Sagas
  • Timeouts (when timeout storage needs to be supported)
  • Routing (containing the tests that require subscription storage)

Examples of exclusions

https://github.com/search?q=org%3AParticular+%22%3CCompile+Remove%3D%22%5C%2A%2A%5CAudit%5C%2A.%2A%22+%2F%3E%22&type=code

danielmarbach avatar Dec 02 '21 07:12 danielmarbach