Release Notes
v.1.1.6
Deprecate Randoms.create(String)
, use Randoms.setSeed(long)
instead.
Fix an instance generated by ConstructorPropertiesArbitraryIntrospector
that was not validated by validation annotations.
Fix using KotlinArbitraryBuilder
when generating an Arb
in kotest module.
v.1.1.5
Fix keep equivalence with ElemenetProperty
and MapKeyElementProperty
and MapValueElementProperty
.
v.1.1.4
Fix not registering size API if decomposing.
Add enrich the failed test log with seed.
v.1.1.3
Fix generating empty String with @Size annotation.
v.1.1.2
Fix setting recursive implementations of self reference object.
Fix registering JavaBuilder and KotlinBuilder.
v.1.1.1
Fix set a recursive object.
Add a missing giveMeJavaBuilder
with an object parameter.
v.1.0.29
Fix generating empty String with @Size annotation.
v.1.0.28
Add support for hashCode
, equals
, toString
in anonymous object
Add enableLoggingFail
option to dismiss the failed logging in FixtureMonkeyBuilder
.
Add supporting for the is
prefix boolean within javaGetter
.
v.1.0.27
Add enableLoggingFail
option as a constructor argument in FailoverIntrospector
v.1.0.26
Add PriorityConstructorArbitraryIntrospector
Add korean
method in MonkeyStringArbitrary
v.1.0.25
Fix concurrency issue with string generation
Fix seed setting as annotated
v.1.0.24
Deprecate ElementJsonSubTypesObjectPropertyGenerator
, PropertyJsonSubTypesObjectPropertyGenerator
in fixture-monkey-jackson
module.
Please use the ElementJsonSubTypesConcreteTypeResolver
, PropertyJsonSubTypesConcreteTypeResolver
instead.
Add new APIs that generates the unique value by Values.unique(Supplier)
or CombinableArbitrary.unique()
.
Check out the examples below.
.set("$[*]", Values.unique(() -> Arbitraries.integers().between(0, 3).sample()))`,
.<List<Integer>>customizeProperty(typedRoot(), CombinableArbitrary::unique)
Add @Seed
to reproduce the randomly populated object in fixture-monkey-junit-jupiter
module.
v.1.0.23
Add the flexible option for complex usage in InterfacePlugin.
Fix for generating Kotlin self-reference with default arguments.
v.1.0.22
Add compatibility with ObjectPropertyGenerator and CandidateConcretePropertyResolver.
Add regenerate when container is filtered.
Deprecate the pushExactTypePropertyCandidateResolver option. Use InterfacePlugin
instead.
v.1.0.21
Deprecate the ObjectPropertyGenerator that modify child properties listed below.
For example, InterfaceObjectPropertyGenerator
, SealedTypeObjectPropertyGenerator
, SingleValueObjectPropertyGenerator
Use InterfaceCandidateConcretePropertyResolver
, SealedTypeCandidateConcretePropertyResolver
instead.
Fix set ZoneId
in Kotlin JDK21.
Fix collection generation not throw exception.
Fix decompose Java Kotlin functional interface.
v.1.0.20
Fix generation of enum implementations as a sealed class in JDK17.
Add support for multi-level inheritance of sealed class and sealed interface.
Fix JdkVariantOptions having higher priority than custom options.
v.1.0.19
Fix a SimpleValuePlugin “out of byte range” error when generate Byte.
v.1.0.18
Fix SimpleValueJqwikPlugin mismatching order with constructor and field.
v.1.0.17
Modify the way a value class is used to output arbitrary value.
Fix sealedInterface
set not working after thenApply.
Add supporting Supplier
type.
Add a new Plugin SimpleValueJqwikPlugin
for beginners, it provides a readable String, limited scope of Number and
Date. It can customize them as well.
v.1.0.16
Add resolve the candidate concrete type of container type.
Fix register working on assignable type.
v.1.0.15
Add ConcreteTypeDefinition
in ArbitraryProperty
, deprecate getChildPropertiesByResolvedProperty
and getChildPropertyListsByCandidateProperty
which is added in 1.0.14.
Add “KotlinDurationIntrospector” supporting generating a Duration type in Kotlin.
Fix setting a child of a concrete type to an abstract type.
Add a new Kotlin Exp expression for referencing root. ex. set(String::root, "expected")
v.1.0.14
Add supporting value class with the private constructor.
Add supporting for sealed class and sealed interface.
Deprecate nullInject
and childPropertyListsByCandidateProperty
properties in ObjectNode
. They would be moved to ArbitraryProperty
.
v.1.0.13
Add InterfacePlugin supports abstract classes through abstractClassExtends
option.
Fix setLazy with value wrapped by Just would not be manipulated.
Fix missing required PropertyGenerator within introspectors.
v.1.0.12
Fix generating an object with the value class property.
v.1.0.11
Fix mutation of a generated object by FieldReflection, BeanArbitraryIntrospector
v.1.0.10
Fix setting object field by any other type.
Refactor does not throw exception when it cannot generate, the next ArbitraryIntrospector will be used.
Add handling when using an ArbitraryIntrospector that does not match the property type. Add a log entry if the property is of a container type, and throw an exception if the property is of a concrete type.
Add better support Kotest by modifying giveMeArb
more Kotlin-like, by adding setArb
API.
v1.0.9
Fix the addExceptGenerateClass
to be unaffected by the specific ArbitraryIntrospector
used
Add customizing Wildcard type in an option
Experimental Feature
Add customizeProperty
API in ArbitraryBuilder
to customize generated value
v1.0.8
Improve the error message with specific details about the failed type when generation fails
Fix setting child type when generating parent type
v1.0.7
Fix the fixture-monkey-kotlin module to be compatible with JDK 8
v1.0.6
Fixture Monkey now infers properties when generating a type using a specific ArbitraryIntrospector
that requires certain types of properties
(Refer to the comment in ArbitraryGenerator#getRequiredPropertyGenerator
)
Support generating an instance of a Kotlin type with a private constructor
Introduce InterfacePlugin
featuring detailed interface options (interfaceImplements
, useAnonymousArbitraryIntrospector
option)
The interfaceImplements
option in FixtureMonkeyBuilder
is now deprecated. It will be moved in InterfacePlugin
v1.0.5
Fix ConstructorPropertiesArbitraryIntrospector
to be able to generate a type that does not use Lombok
Fix FailoverIntrospector
catching an exception thrown by declaring a CombinableArbitrary
v1.0.4
Record types are generated using the canonical constructor by default
v1.0.3
Introduce a new option pushJavaConstraintGeneratorCustomizer
to customize the JavaConstraintGenerator
option
Parallel execution is now supported with the jqwik
engine
Fix the generation of decimal values, ensuring a minimum of 0, with the kotest-property engine
v1.0.2
Fix generating a record instance with 2 or more constructors
v1.0.1
Add Exp DSL resolving an array element at a specific index
v1.0.x
Add instantiate as stable API
Kotlin object generation with instantiateBy constructor, now utilizes the provided Kotlin constructor
Experimental Feature
- Add a new property selector javaGetter replacing String expression with type-safe method reference.
v0.6.x
v0.6.12
Fix setting Just in setLazy.
Fix a bug in validOnly operation in ArbitraryBuilder.
Fix a bug in addContainerType, addDecomposedContainerValueFactory option, which is not working for an implementation of option type.
Remove jqwik-kotlin dependency in fixture-monkey-kotlin module.
Deprecate FixtureMonkeyOptions dependency in ObjectPropertyGeneratorContext, ContainerPropertyGeneratorContext.
Add addDecomposedContainerValueFactory option.
Add giveMeExperimentalBuilder for experimental features.
Experimental Feature
Add a new ArbitraryBuilder operation instantiate, instantiateBy for Kotlin, which specifies how to instantiate a given type.
Providing a static method constructor() for specifying that it instantiates a given type by constructor.
Providing a static method factoryMethod() for specifying that it instantiates a given type by factory method.
Providing a static method field(), javaBeansProperty() that subsequently sets a property for both constructor(), factoryMethod()
v0.6.11
Add kotest module. Using it as a runtime of generating primitive types.
Add supporting a custom validator in Javax, Jakarta Bean Validation.
Add PropertySelecotr as a super type of ExpressionGenerator to abstract how to reference a property.
Fix a bug in size Map in thenApply operation.
Add option to resolve a seed for deterministic re-runs.
Fix set a nested self reference object.
v0.6.10
An anonymous object generated by Fixture Monkey could invoke a default method instead of invoking an arbitrary method.
v0.6.9
Fix sampleList always returns a same element with AnonymousArbitraryIntrospector.
Remove CombinableArbitrary.from(Arbitrary). Use ArbitraryUtils.toCombinableArbitrary instead.
Refactor CombinableArbitrary.from has a type parameter instead of wildcard type.
Fix generating self reference map type with different key type.
Refactor setPostCondition does not cause any performance issue.
Fix generating a unique key of Map.
Add new option javaConstraintGenerator which defines a constraint of String, Decimal type, Integer type, DateTime type, Container type.
v0.6.8
DefaultDecomposedContainerValueFactory
supports Map.Entry
A concurrency bug fixed in PrimaryConstructorArbitraryIntrospector
v0.6.7
Deprecate List<PropertygenerateChildProperties(AnnotatedType annotatedType)
in PropertyGenerator
interface, it will be removed in 0.7.0
Add List<PropertygenerateChildProperties(Property property)
in PropertyGenerator
interface
v0.6.6
Log the error instead of throwing an exception if setting field is failed with FieldReflectionArbitraryIntrospector
Add more support for kotlin extensions in FixtureMonkeyBuilder