Changelog History
Page 1
-
v1.3.10 Changes
December 04, 2020๐ New and Enhanced Features
- ๐ง Introduced
JavaBeanReportingFormat
for simpler and configurable reporting
of Java beans.
๐ฅ Breaking Changes
- ๐
SampleReportingFormat.reportJavaBean(..)
has been deprecated.
๐ Will be removed in version 1.4.0.
๐ Bug Fixes
Arbitraries.lazy()
did not allow exhaustive generation but does now.SampleReportingFormat.reportJavaBean(..)
can now handle methods named
is
orget
.SampleReportingFormat.reportJavaBean(..)
can now handle properties
that returnOptional<T>
. - ๐ง Introduced
-
v1.3.9 Changes
December 01, 2020๐ New and Enhanced Features
๐ Generating email addresses
๐ง has now configuration options.Generated email addresses now
have fewer edge cases.โ Added constraint annotation
๐@Email
for generating valid email addresses.๐ Experimental support for
๐ changing an arbitrary's edge cases.Constraint annotation
@StringLength
now works for any arbitrary that generates aString
.Range annotations (
@Byte|Short|Int|Long|Float|Double|BigRange
) do work now when applied
to any arbitrary that generates the appropriate numeric type.๐ฅ Breaking Changes
- Email arbitrary no longer generates domain hosts without top level domain
๐ Bug Fixes
Reporting of null values in failed properties
no longer fails with NPE.Sampling arbitraries with null values
no longer fails. -
v1.3.8 Changes
November 12, 2020๐ New and Enhanced Features
You can now
๐ generate valid email addresses.The header of the label column in
๐ histograms and number range histograms
can now be changed.๐ฅ Breaking Changes
The distribution of char groups when generating
Character
s orString
s
is now weighted by the number of chars in each group so that each possible
char has the same probability of being generated - except for edge cases.๐
StringArbitrary.withChars(Arbitrary<Character>)
was deprecated๐
CharacterArbitrary.with(Arbitrary<Character>)
was deprecated๐ Bug Fixes
No known bugs.
-
v1.3.7 Changes
October 27, 2020๐ New and Enhanced Features
โ Added two edge cases for generation of integral numbers.
๐ Reporting of parameters that changed during execution of property is now better
at detecting real changes.๐ฅ Breaking Changes
- Examples with a failing assumption - i.e. throwing a
TestAbortedException
-
๐ will now be reported as being skipped. See #122
for motivation and reasoning.
๐ Bug Fixes
Using some arbitraries with
Arbitrary.sample()
outside of a jqwik context
no longer worked.
Now it does again.0๏ธโฃ The default character generator was erroneously considered to produce unique
characters. Resulted in a strange to analyze
bug when generating functions - Examples with a failing assumption - i.e. throwing a
-
v1.3.6 Changes
September 21, 2020๐ New and Enhanced Features
Shrinking behaviour of arbitraries created with
Combinators.withBuilder(..)
is now much better, especially much faster.โฌ๏ธ Upgrade to JUnit Platform 1.7.0
๐ฅ Breaking Changes
A maximum of 1000 (instead of 10000) edge cases is generated per arbitrary.
Arbitraries that allow nullables through
Arbitrary.injectNull()
or
annotation@WithNull
will now shrink their values tonull
if possible.๐ Bug Fixes
With a lot of edge cases sometimes only edge cases were generated.
Now the minimum ratio is 1 edge case in 3 generating steps.โ Warning about combinatorial explosion of edge cases generation is
now logged only once.Edge cases for
oneOf(..)
andfrequencyOf(..)
generators are now correctly being shrunk. -
v1.3.5 Changes
August 26, 2020๐ New and Enhanced Features
โ Added
Tuple.of()
andTuple.empty()
to create an empty tuple.The time out for bounded shrinking can now be changed in
jqwik.properties
Sample reporting will now report changes to parameters during property execution
โ Added some convenience to use POJOs as builders:
BuilderCombinator.build()
: Return arbitrary of builder itself
-
CombinableBuilder.inSetter(..)
: Set a builder's property and go on using itโ Added
SampleReportingFormat.reportJavaBean(Object bean)
๐ฅ Breaking Changes
- 0๏ธโฃ Shrinking is no longer bound by number of shrinking attempts, but by time with a 10 seconds default.
The reason is that counting shrinking attempts in a consistent manner was difficult, and
shrinking could take very very long despite being inBOUNDED
mode.
๐ Bug Fixes
- edge cases generation will be stopped when 10000 edge cases have been found.
๐ See #113
-
v1.3.4 Changes
August 18, 2020๐ New and Enhanced Features
Arbitraries.lazyOf(Supplier<Arbitrary<T>> ...)
is now the method of choice for
๐ recursive value generation. It has much better shrinking behaviour than the
more genericlazy()
combined withoneOf()
.โ Added
PropertyLifecycleContext.attributes()
, which allows to query, set and change
๐ a property method's attributes like number of tries and seed within a
AroundPropertyHook
lifecycle hook.โ Added
@PropertyDefaults
annotation which allows to set the defaults
of all property methods in a container.๐ฅ Breaking Changes
- No known breaking changes
๐ Bug Fixes
- Made loading of services thread-safe to allow use of jqwik generators
in parallel JUnit runs: #117.
Thank you, https://github.com/Danny02!
-
v1.3.3 Changes
August 08, 2020๐ New and Enhanced Features
Shrinking has been re-implemented from scratch. Should be more predictable and
shrink to smaller samples in most cases.Shrinking now has stronger equivalence requirements for falsification:
- Same type of assertion error or other exception
- Assertion error or exception thrown from the same code location
Shrinking
@AlphaChars
will now shrink to uppercase letters (if possible)
since their Unicode codepoint is smaller.Negative numbers are shrunk to their positive counterpart if possible
๐ Changes in property result reporting:
- Shrunk samples have now header line "Shrunk Sample ( steps)"
- If no shrinking took place samples have header line "Sample"
- Original samples now also report the original error
- Action sequences in stateful properties got their own reporting format
Arbitraries.frequencyOf()
now takes covariant arbitrary types๐ฅ Breaking Changes
โ Exceeding shrinking bound is now logged as warning instead of being reported
through JUnit platform reporting๐ Deprecated interface
net.jqwik.api.ShrinkingSequence
. Throw all your implementations away!๐ Deprecated class
net.jqwik.api.FalsificationResult
. No longer used anywhere.๐ Deprecated method
Shrinkable.shrink(Falsifier<T> falsifier)
.
It's no longer used anywhere.๐ Bug Fixes
- Reporting an exhausted property had been broken since
1.2.4
and nobody noticed.
Works again.
-
v1.3.2 Changes
July 02, 2020๐ New and Enhanced Features
โ Added
Arbitrary.dontShrink()
โ Added
SetArbitrary.mapEach()
โ Added
SetArbitrary.flatMapEach()
โ Added
ListArbitrary.mapEach()
โ Added
ListArbitrary.flatMapEach()
โ Added
Arbitraries.just(aConstant)
and deprecatedArbitraries.constant(aConstant)
.
๐ Most other PBT libraries seem to usejust
for this functionality.โ Added programmatic access to JUnit 5 platform reporting
๐ฅ Breaking Changes
Introduced
StreamableArbitrary
hierarchy:Arbitrary.set()
now has return typenet.jqwik.api.arbitraries.SetArbitrary
Arbitrary.list()
now has return typenet.jqwik.api.arbitraries.ListArbitrary
Arbitrary.stream()
now has return typenet.jqwik.api.arbitraries.StreamArbitrary
-
Arbitrary.iterator()
now has return typenet.jqwik.api.arbitraries.IteratorArbitrary
Arbitraries.maps(...)
now has return typenet.jqwik.api.arbitraries.MapArbitrary
๐
net.jqwik.api.lifecycle.Reporter
moved tonet.jqwik.api.Reporter
๐ Bug Fixes
๐ป Reporting samples with circular dependencies does no longer throw an exception
โ Reporting test failure due to exception without message
โ no longer leads to ignored testReporting shrunk samples now report the actual sample and not a freshly generated one
-
v1.3.1 Changes
June 19, 2020๐ New and Enhanced Features
Reporting of falsified, shrunk and generated samples has been completely reworked.
๐ See this issue for more details.โ Added
Arbitrary.ignoreException(exceptionType)
which allows to ignore exceptions during value generation.๐ฅ Breaking Changes
Arbitraries.of(List<T>)
replaced withArbitraries.of(Collection<T>)
Arbitraries.ofSuppliers(List<Supplier<T>>)
replaced withArbitraries.of(Collection<Supplier<T>>)
๐ Bug Fixes
No open bugs had been reported.