From 8e0c75926c55632fea0546ded6cb86a72042a617 Mon Sep 17 00:00:00 2001 From: Johannes Link Date: Wed, 6 Mar 2024 09:14:04 +0100 Subject: [PATCH] Started to collect material for feature usage survey. --- FEATURE_USAGE_SURVEY.md | 77 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 FEATURE_USAGE_SURVEY.md diff --git a/FEATURE_USAGE_SURVEY.md b/FEATURE_USAGE_SURVEY.md new file mode 100644 index 000000000..47a1ad8d8 --- /dev/null +++ b/FEATURE_USAGE_SURVEY.md @@ -0,0 +1,77 @@ +# Survey about the usage of the not-so-popular features of jqwik + +Rate as many features as you like. The more the better. + +Rating scale: +- 0: I didn't know about this feature +- 1: I know about this feature, but I never used it +- 2: I used this feature once or twice, but I could easily live without it +- 3: I use this feature regularly, and I would miss it if it was gone +- 4: I use this feature all the time, and it's crucial for my work + +## Features + +- Have a test container class implement `AutoCloseable` + +- Tagging properties with `@Tag` annotation + +- Using injected reporter `Reporter reporter` parameter + +- Using footnotes through injected `Footnotes footnotes` parameter + +- Setting `maxDiscardRatio` for a property + +- Using data-driven properties with `@Data` and `@FromData` annotations + +- `@ForAll(supplier=.class)`: Alternative to `@ForAll("providerMethod")` + +- `@From("providerMethod")`: Alternative to `@ForAll("providerMethod")` + +- Using `Arbitraries.randomValue(Function randomFunction)` to create custom objects + +- Using `Arbitraries.fromGenerator(RandomGenerator generator)` to create custom objects + +- Implementing `Arbitrary` interface + +- Implementing `RandomGenerator` directly + +- Generating functional types (SAM types), e.g. `@ForAll Function myFunction` + +- Changing edge case generation through `Arbitrary.configureEdgeCases(..)` + +- Changing `genSize` with `Arbitrary.fixGenSize(int)`. + +- Changing the shrinking target of numeric types, e.g. `IntegerArbitrary.shrinkTowards(int target)` + +- Changing the random distribution of numeric types, e.g. `IntegerArbitrary.withDistribution(RandomDistribution distribution)` + +- Changing the length distribution of collections or strings, + e.g. `ListArbitrary.withSizeDistribution(RandomDistribution distribution)` + +- Ignoring exceptions during value generation + - with annotation attribute `@ForAll(ignoreExceptions=.class)` + - with `Arbitrary.ignoreException(Class exceptionType)` + +- Combining arbitraries with Builder API + +- Deterministic recursive data generation with `Arbitraries.recursive(..)`. + +- Using arbitraries outside Jqwik lifecycle, e.g. to generate test data in example based tests + - Using `JqwikSession` API + +- Stateful properties + - Using the old API in package `net.jqwik.api.stateful` + - Using the new API in package `net.jqwik.api.state` + +- Lifecycle Hooks + - Writing your own custom lifecycle hooks + - Lifecycle storage using `Store` API + - `@BeforeTry` annotation on member variables + - `@PerProperty` to specify lifecycle adaptations for individual properties + + +- Kotlin module + +- Time module + +- Web module \ No newline at end of file