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.ObjectThis 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 SummaryNested Classes Modifier and Type Class Description static classStatistics.StatisticsFacade
 - 
Method SummaryAll Methods Static Methods Concrete Methods Modifier and Type Method Description static voidcollect(java.lang.Object... values)Call this method to record an entry for statistical data about generated values.static voidcoverage(java.util.function.Consumer<StatisticsCoverage> checker)Perform coverage checking for successful property on statistics for values collected with collect(Object...)static StatisticsCollectorlabel(java.lang.String label)Call this method to get a labeled instance of StatisticsCollector.
 
- 
- 
- 
Method Detail- 
collectpublic static void collect(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 on- valuesis violated
- See Also:
- label(String)
 
 - 
labelpublic 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
 
 
- 
 
-