Releases: jqwik-team/jqwik
Release 1.2.6: Lifecycle Hooks Improvements
Breaking Changes
- More changes to Lifecycle Hooks API in order to support a
jqwik Spring extension
Release 1.2.5: Prepare for Spring Support
New and Enhanced Features
-
Added
@BeforeExample
as an alias of@BeforeProperty
-
Added
@AfterExample
as an alias of@AfterProperty
-
Lifecycle methods annotated with
@BeforeTry
,@AfterTry
,@BeforeProperty
,
@AfterProperty
,@BeforeContainer
and@AfterContainer
can now have
parameters that will be resolved using registeredResolveParameterHook
instances. -
Added
ActionSequence.withInvariant(String label, Invariant<M> invariant);
. -
Added
ActionSequence.peek(Consumer<M> modelPeeker)
. -
Arbitraries.sequences(Arbitrary<? extends Action<M>> actionArbitrary)
does now accept
covariant subtypes and still returns typeArbitrary<Action<M>>
. -
Reporting text on failed statistics coverage check improved.
-
Upgrade to JUnit Platform 1.6.1
Breaking Changes
- Some fundamental changes to Lifecycle Hooks API in order to support a
jqwik Spring extension
Bug Fixes
- Labelled statistics reports should now reliably being reported
in order of first usage.
Release 1.2.4: Annotated Lifecycle Methods
New and Enhanced Features
-
Annotated lifecycle methods have been implemented:
@BeforeContainer
@AfterContainer
@BeforeProperty
@AfterProperty
@BeforeTry
@AfterTry
-
@StatisticsReport
can now also be used on container classes -
Statistical coverage checking can now be done in a fluent API style
-
Improved shrinking of parameters that require duplicate values for falsifying a property
-
Upgrade to JUnit Platform 1.6.0
Breaking Changes
-
Removed
Statistics.coverageOf()
. It's nowStatistics.label(..).coverage(..)
-
Falsifier
no longer extendsPredicate<T>
-
Many breaking changes in Lifecycle API; but this API had not been published
or documented anyway.
Bug Fixes
No open bugs had been reported.
Release 1.2.3 - Coverage Checking and More
New and Enhanced Features
-
The new big feature of this release is coverage checking.
-
Statistics reporting
can now be switched off.
Alternatively you can
plug in your own reporting format. -
Added
Arbitrary.injectDuplicates(duplicateProbability)
to enable
the high probability generation of duplicate values -
Added
Arbitrary.tuple1(), Arbitrary.tuple2(), Arbitrary.tuple3(), Arbitrary.tuple4()
to generate tuples of same base type -
Character
\u0000
is being generated as default edge case
in String and Character arbitraries - if it lies within the allowed character range.
Breaking Changes
-
Statistics.collect(..)
andStatisticsCollector.collect(..)
can no longer
be called with no values. There must be at least one - but it can benull
. -
Statistics.collect(..)
andStatisticsCollector.collect(..)
must always
be called with same number of parameters. -
Deprecated
net.jqwik.api.Statistics
. Usenet.jqwik.api.statistics.Statistics
instead. -
The standard property report is now the last thing to be reported,
i.e. after statistics reports. -
Default priority in AbstractDomainContextBase is now 0 (previously 1),
i.e. they no longer supersede built-in jqwik arbitrary providers but mix in.
Bug Fixes
No open bugs had been reported.
Release 1.2.2
New and Enhanced Features
-
When configuration parameter
database
is set to empty, test run recording
is now completely disabled. -
Exhaustive generation of single decimals and floats
-
Added
Arbitrary.sample()
andArbitrary.sampleStream()
for enabling
the use of generators outside of properties -
Arbitraries.oneOf(Arbitrary<? extends T>... arbitraries)
does now accept
covariant subtypes and still returns typeArbitrary<T>
.
Breaking Changes
- Deprecated
Arbitrary.withSamples(T... samples)
Bug Fixes
Release 1.2.1
New and Enhanced Features
- New configuration parameter
defaultGeneration
forjqwik.properties
file - Added
CharacterArbitrary.with(CharSequence allowedChars)
- Added
StringArbitrary.withChars(CharSequence allowedChars)
- Arbitraries of List, Set, Stream und arrays are now of type
StreamableArray
- Introduced
StreamableArray.reduce()
HashMap
can now be generated by default
Breaking Changes
-
Arbitrary.exhaustive()
must no longer be overridden in implementors of
Arbitrary. OverrideArbitrary.exhaustive(long maxNumberOfGeneratedSamples)
instead. -
TypeUsage.getTypeArguments()
: In case of type variables or wildcard types
this method will now return the upper bound's type arguments if there is
a single upper bound and no lower bound. This enables correct generation
of variables likeT extends Map<Integer, String>
.
Bug Fixes
-
@ForAll
annotation could not be replaced by self-made annotation. Now it can. -
Annotations in type parameters of bounds of type variables
are now correctly recognized. -
Annotations in type parameters of bounds of wildcards
are now correctly recognized.
Release 1.2.0
-
Breaking Change: Removed
CharacterArbitrary.between(min, max)
which had been deprecated in 1.1.3 -
Promoted from
API.Status.EXPERIMENTAL
toAPI.Status.MAINTAINED
:Arbitraries.forType(Class<T> targetType)
and interfaceTypeArbitrary
- Annotation
@UseType
and enumUseTypeMode
Arbitrary.fixGenSize(int genSize)
Combinators.withBuilder(Supplier<B> builderSupplier)
and
Combinators.withBuilder(Arbitrary<B> builderArbitrary)
- Annotation
@Domain
and interfaceDomainContext
-
Upgrade to JUnit platform 1.5.1
-
Upgrade to Gradle 5.5.1
-
Default character generation now excludes codepoints
0xd800
through0xdfff
-
Introduced Labeled Statistics
-
Added
Arbitraries.entries()
-
Added default generation for
Map.Entry
instances -
Fixed set generation bug #65
-
Enhanced statistics reporting
by absolute count -
jqwik can now generate instances of
functions and other functional types -
Fixed bug in Unshrinkable.equals.
Many thanks to mhyeon-lee for that pull request! -
List and array generation from unique arbitraries now have a default max size
that makes sense -
Provider methods do now accept
two optional parameters -
New
@From
annotation to
provide arbitraries for embedded type parameters
Release 1.1.6
- Removed dependencies to internal classes in JUnit platform
- Added
Arbitraries.maps()
- Added default generation for
Map
instances @Domain
annotation can now also refer to inner class of test container's base class.
Many thanks to larsrh for that pull request!
Release 1.1.5
- Added
shrinkTowards(value)
to all decimal number arbitraries:
FloatArbitrary, DoubleArbitrary, BigDecimalArbitrary - Exceptions during test class instance creation are now reported as failures
- Removed caching of engine descriptor in JqwikTestEngine
Release 1.1.4
- Upgrade to junit-platform 1.4.2
- Added
Arbitrary.collect(Predicate<List<T>> until)
in order to collect values in a list - Added
shrinkTowards(value)
to all integral number arbitraries:
ByteArbitrary, ShortArbitrary, IntegerArbitrary, LongArbitrary, BigIntegerArbitrary
in order to change the shrinking target - Upgrade Gradle to 5.4.2