Table of Content
- New Features
- API
- Domain/Core aka write own assertion functions
- Fixes
- Improvements
- Breaking Changes
- Deprecation
- Migrating deprecated functionality
- Sponsors
New Features
All APIs
- #460 add Iterator.hasNext/hasNotNext => thanks to @mspear for the implementation
- #484 introduce Comparable.isEqualComparingTo => thanks to @jaibhavaya for the implementation
- #180 Any.isNoneOf/isNotIn=> thanks to @anesabml for the implementation
- #479 Allow that Sequence and Array can be passed to elementsOf => thanks to @anesabml for the implementation
- #481 accept date and time as string in ISO 8601 format for ChronoLocalDateTime => thanks to @rkiselev for the implementation of the fluent API
api-fluent-en_GB
- no fluent only additions this time
api-infx-en_GB
- Path.hasSameTextualContentAs added to infix API as well => thanks to @z13z for most of the work
Domain / Core
- we transition away from atrium-domain-... to atrium-logic, getting rid of ServiceLoader and other changes. Some parts of domain where already deprecated. Stay tuned, documentation will be updated with 0.14.0
Fixes
- #515 Path assertions use wrong description
Improvements
- #234 remove limit of stacktrace
- #483 adjust reporting for isLess/GreaterThanOrEqual => thanks to @z13z for the implementation
- #477 deprecate defaultTranslationOf(IgnoringCase) => thanks to @z13z for the implementation
- #337 filter jasmine out of error-stacks => thanks to @z13z for part of the work
Breaking Changes
Planned (previously deprecated or announced)
- none this time
Unplanned
- we are treating Translatable now special in the ObjectFormatter which does not make it necessary to wrap it into a RawString. This is a breaking change depending on how you have defined your Translatable. In case it was an Enum and you formatted it without wrapping it into a RawString, then it is now translated instead. I assume this should never be the case, so this breaking change is only hypothetical.
- removed
ch.tutteli.atrium.assertions.builders.Explanatory.ExplanationOption#withExplanation(ch.tutteli.atrium.reporting.translating.Translatable)
because Translatables are now treated as Text in any case -- this is a binary backward compatibility break, it should suffice to re-compile. - removed
ch.tutteli.atrium.domain.builders.creating.changers.FeatureExtractorBuilder.RepresentationInCaseOfFailureStep#withRepresentationForFailure(ch.tutteli.atrium.reporting.translating.Translatable)
for the same reason - removed
previousExpect
andgetAssertions()
from FeatureExpect => let me know in case you used it - removed experimental
config
from RootExpect and FeatureExpect
Deprecation
- Feature/RootExpectConfig; ; will be removed with 1.0.0
- CoreFactory... (will all be removed with 1.0.0)
- newDelegatingReportingAssertionContainer
- newFeatureExpect
- newReportingAssertionContainer
- newCollectingAssertionContainer
- RawString; will be removed with 1.0.0 -> use Text
- StringBasedRawString; will be removed with 1.0.0 -> use Text
- TranslatableBasedRawString; will be removed with 1.0.0 -> no longer required, use Translatable directly
- ReportingAssertionContainer including factory methods; will be removed with 1.0.0 -> use RootExpect, FeatureExpect or DelegatingExpect instead
- AssertionChecker and all its variants including factory methods; will be removed with 1.0.0 -> use RootExpect, FeatureExpect or DelegatingExpect instead
- ch.tutteli.atrium.translations.ErrorMessages -> use ch.tutteli.atrium.creating.ErrorMessages instead
- ch.tutteli.atrium.domain.robstoll.lib.creating.throwable.thrown.creators.ThrowableThrownFailureHandler -> use ch.tutteli.atrium.logic.impl.creating.changers.ThrowableThrownFailureHandler instead
- the modules atrium-domain-robstoll and atrium-domain-robstoll-lib -> use atrium-logic instead
- all assertion interfaces in domain-api except for CharSequence/IterableAssertions, they will be deprecated in 0.14.0
- correspondingly all builders in domain-builders, impl classes in domain-robstoll and impl functions in domain-robstoll-lib (basically almost everything in domain-robstoll and domain-robstoll-lib is deprecated -> use atrium-logic instead)
Breaking Changes with 0.14.0
- we are going to replace IterableContains with IterableLikeContains, this is a binary backward compatibility break. Source compatibility should still hold. IterableLikeContains will path the way to use it with Array types.
- we are going to replace CharSequenceContains from domain with CharSequence from logic, this is a binary backward compatibility break. Source compatibility should still hold.
- the new module atrium-logic introduced with this version is not stable yet, we most likely break things with 0.14.0. Planned is to replace CollectionAssertions with CollectionLikeAssertions.
Breaking Changes with 1.0.0
See atrium-roadmap -> Milestone 1.0.0
Migrating deprecated functionality
There a few deprecations in this version (see above) --
use the ReplaceWith
provided in the @Depreacted
annotations.
Please have a look at the older release-notes in case you don't migrate from 0.12.0
Sponsors
We would like to thank Tegonal GmbH for sponsoring Support and PR-Review time as well as the extra hours to finish the open PRs which should made it into v0.13.0.
Are you are using Atrium at work?
Please consider to support the project as well by:
- sponsoring robstoll (Author and main contributor)
- report bugs
- share your assertion functions with others