Package net.jqwik.api.statistics
Class Statistics
- java.lang.Object
-
- net.jqwik.api.statistics.Statistics
-
@API(status=MAINTAINED, since="1.2.3") public class Statistics extends java.lang.Object
This class serves as a container for static methods to collect statistical data about generated values within a property method and to check coverage of that data.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Statistics.StatisticsFacade
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
collect(java.lang.Object... values)
Call this method to record an entry for statistical data about generated values.static void
coverage(java.util.function.Consumer<StatisticsCoverage> checker)
Perform coverage checking for successful property on statistics for values collected with collect(Object...)static StatisticsCollector
label(java.lang.String label)
Call this method to get a labeled instance of StatisticsCollector.
-
-
-
Method Detail
-
collect
public static void collect(@Nullable java.lang.Object... values)
Call this method to record an entry for statistical data about generated values. As soon as this method is called at least once in a property method, the statistical data will be reported after the property has finished.Usually you call
collect(Object[])
method with all arbitraries (parameters passed to test) and than you usecoverage(Consumer)
method to ensure that certain count of some value has been tried.NOTE: you can give descriptive name to some collections using
label(String)
method. Usually you make multiple label+collect calls, i.e. for each passed arbitrary parameter. This way you can provide parameters with descriptive names/labels.Complete documentation is found at the jqwik documentation page for Checking Coverage of Collected Statistics.
Simple example:
@Property(generation = GenerationMode.RANDOMIZED) void labeledStatistics(@ForAll @IntRange(min = 1, max = 10) Integer anInt) { String range = anInt < 3 ? "small" : "large"; Statistics.label("range").collect(range); Statistics.label("value").collect(anInt); Statistics.label("range).coverage( coverage -> coverage.check("small").percentage(p -> p > 20.0) ); Statistics.label("value").coverage( coverage -> coverage.check(0).count(c -> c > 0) ); }
- Parameters:
values
- Can be anything. The list of these values is considered a key for the reported table of frequencies. Constraints:- There must be at least one value
- The number of values must always be the same in a single property
- Values can be
null
- Throws:
java.lang.IllegalArgumentException
- if one of the constraints onvalues
is violated- See Also:
label(String)
-
label
public static StatisticsCollector label(java.lang.String label)
Call this method to get a labeled instance of StatisticsCollector.- Parameters:
label
- The label will be used for reporting the collected statistical values- See Also:
javadoc of the collect(Object...) method for example usage
-
coverage
@API(status=MAINTAINED, since="1.4.0") public static void coverage(java.util.function.Consumer<StatisticsCoverage> checker)
Perform coverage checking for successful property on statistics for values collected with collect(Object...)Sample usage:
Statistics.coverage(coverage -> coverage.check("small").percentage(p -> p > 20.0)); Statistics.coverage(coverage -> coverage.check(0).count(c -> c > 0));
- Parameters:
checker
- Code that consumes a StatisticsCoverage object- See Also:
javadoc of the collect(Object...) method for example usage
-
-