Fixed nondeterministic test with JSONAssert #199
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why
This PR fixes a test in
CargoTrackingRestServiceIntegrationTest.javathat nondeterministically fails:se.citerus.dddsample.interfaces.tracking.ws.CargoTrackingRestServiceIntegrationTest#shouldReturn200ResponseAndJsonWhenRequestingCargoWithIdABC123The problem arises from the fact that JSON properties in the JSON string returned by
response.getBody()are not guaranteed to have a defined order but the tests assume a specific order. The issue identified using Nondex, a tool designed for detecting and debugging wrong assumptions on under-determined Java APIs by randomizing iteration order.What
Proposed Changes:
JSONAssert.assertEqualswas used, enabling the assertion to test for equality while being insensitive to property ordering.Steps to Reproduce
Run the following commands:
Running the commands will produce the following results:
Reason for Failure: As shown above, the assertion in the test failed because the ordering of the JSON properties in the JSON string changed but the assertion assumed a specific predefined ordering for the JSON string.
How tested
After the fix, I was able to get the test to pass on NonDex. No further order-related failures occurred.