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.