@@ -194,18 +194,20 @@ strategy.
194
194
* ` dynamic ` : Computes the desired parallelism as ` <available cores> ` *
195
195
` cucumber.execution.parallel.config.dynamic.factor ` .
196
196
197
- * ` fixed ` : Set the desired parallelism to ` cucumber.execution.parallel.config.fixed.parallelism ` .
197
+ * ` fixed ` : Set ` cucumber.execution.parallel.config.fixed.parallelism ` to the
198
+ desired parallelism and ` cucumber.execution.parallel.config.config.fixed.max-pool-size `
199
+ to the maximum pool size of the underlying ForkJoin pool.
198
200
199
201
* ` custom ` : Specify a custom ` ParallelExecutionConfigurationStrategy `
200
202
implementation through ` cucumber.execution.parallel.config.custom.class ` .
201
203
202
204
If no strategy is specified Cucumber will use the ` dynamic ` strategy with a
203
205
factor of ` 1 ` .
204
206
205
- Note: Cucumber does not guarantee that the number of concurrently executing
206
- tests will not exceed the configured parallelism. The underlying ` ForkJoinPool `
207
- used to execute scenarios may spawn additional threads. To obtain such
208
- guarantees us a custom parallel configuration strategy .
207
+ Note: While ` .fixed.max-pool-size ` effectively limits the maximum number of
208
+ concurrent threads, Cucumber does not guarantee that the number of concurrently
209
+ executing scenarios will not exceed this. See (junit5/ # 3108 ) [ https://github.com/junit-team/junit5/issues/3108 ]
210
+ for details .
209
211
210
212
### Exclusive Resources ###
211
213
@@ -302,86 +304,88 @@ documentation
302
304
documentation on Cucumber properties see [ Constants] ( src/main/java/io/cucumber/junit/platform/engine/Constants.java ) .
303
305
304
306
```
305
- cucumber.ansi-colors.disabled= # true or false.
306
- # default: false
307
-
308
- cucumber.filter.name= # a regular expression.
309
- # only scenarios with matching names are executed.
310
- # example: ^Hello (World|Cucumber)$
311
- # note: To ensure consistent reports between Cucumber and
312
- # JUnit 5 prefer using JUnit 5s discovery request filters
313
- # or JUnit 5 tag expressions instead.
314
-
315
- cucumber.features= # comma separated paths to feature files.
316
- # example: path/to/example.feature, path/to/other.feature
317
- # note: When used any discovery selectors from the JUnit
318
- # Platform will be ignored. Use with caution and care.
319
-
320
- cucumber.filter.tags= # a cucumber tag expression.
321
- # only scenarios with matching tags are executed.
322
- # example: @Cucumber and not (@Gherkin or @Zucchini)
323
- # note: To ensure consistent reports between Cucumber and
324
- # JUnit 5 prefer using JUnit 5s discovery request filters
325
- # or JUnit 5 tag expressions instead.
326
-
327
- cucumber.glue= # comma separated package names.
328
- # example: com.example.glue
329
-
330
- cucumber.junit-platform.naming-strategy= # long or short.
331
- # default: short
332
- # include parent descriptor name in test descriptor.
333
-
334
- cucumber.plugin= # comma separated plugin strings.
335
- # example: pretty, json:path/to/report.json
336
-
337
- cucumber.object-factory= # object factory class name.
338
- # example: com.example.MyObjectFactory
339
-
340
- cucumber.publish.enabled # true or false.
341
- # default: false
342
- # enable publishing of test results
343
-
344
- cucumber.publish.quiet # true or false.
345
- # default: false
346
- # suppress publish banner after test execution.
347
-
348
- cucumber.publish.token # any string value.
349
- # publish authenticated test results.
350
-
351
- cucumber.snippet-type= # underscore or camelcase.
352
- # default: underscore
353
-
354
- cucumber.execution.dry-run= # true or false.
355
- # default: false
356
-
357
- cucumber.execution.execution-mode.feature= # same_thread or concurrent
358
- # default: concurrent
359
- # same_thread - executes scenarios sequentially in the
360
- # same thread as the parent feature
361
- # concurrent - executes scenarios concurrently on any
362
- # available thread
363
-
364
- cucumber.execution.parallel.enabled= # true or false.
365
- # default: false
366
-
367
- cucumber.execution.parallel.config.strategy= # dynamic, fixed or custom.
368
- # default: dynamic
369
-
370
- cucumber.execution.parallel.config.fixed.parallelism= # positive integer.
371
- # example: 4
372
-
373
- cucumber.execution.parallel.config.dynamic.factor= # positive double.
374
- # default: 1.0
375
-
376
- cucumber.execution.parallel.config.custom.class= # class name.
377
- # example: com.example.MyCustomParallelStrategy
378
-
379
- cucumber.execution.exclusive-resources.<tag-name>.read-write= # a comma separated list of strings
380
- # example: resource-a, resource-b.
381
-
382
- cucumber.execution.exclusive-resources.<tag-name>.read= # a comma separated list of strings
383
- # example: resource-a, resource-b
384
-
307
+ cucumber.ansi-colors.disabled= # true or false.
308
+ # default: false
309
+
310
+ cucumber.filter.name= # a regular expression.
311
+ # only scenarios with matching names are executed.
312
+ # example: ^Hello (World|Cucumber)$
313
+ # note: To ensure consistent reports between Cucumber and
314
+ # JUnit 5 prefer using JUnit 5s discovery request filters
315
+ # or JUnit 5 tag expressions instead.
316
+
317
+ cucumber.features= # comma separated paths to feature files.
318
+ # example: path/to/example.feature, path/to/other.feature
319
+ # note: When used any discovery selectors from the JUnit
320
+ # Platform will be ignored. Use with caution and care.
321
+
322
+ cucumber.filter.tags= # a cucumber tag expression.
323
+ # only scenarios with matching tags are executed.
324
+ # example: @Cucumber and not (@Gherkin or @Zucchini)
325
+ # note: To ensure consistent reports between Cucumber and
326
+ # JUnit 5 prefer using JUnit 5s discovery request filters
327
+ # or JUnit 5 tag expressions instead.
328
+
329
+ cucumber.glue= # comma separated package names.
330
+ # example: com.example.glue
331
+
332
+ cucumber.junit-platform.naming-strategy= # long or short.
333
+ # default: short
334
+ # include parent descriptor name in test descriptor.
335
+
336
+ cucumber.plugin= # comma separated plugin strings.
337
+ # example: pretty, json:path/to/report.json
338
+
339
+ cucumber.object-factory= # object factory class name.
340
+ # example: com.example.MyObjectFactory
341
+
342
+ cucumber.publish.enabled # true or false.
343
+ # default: false
344
+ # enable publishing of test results
345
+
346
+ cucumber.publish.quiet # true or false.
347
+ # default: false
348
+ # suppress publish banner after test execution.
349
+
350
+ cucumber.publish.token # any string value.
351
+ # publish authenticated test results.
352
+
353
+ cucumber.snippet-type= # underscore or camelcase.
354
+ # default: underscore
355
+
356
+ cucumber.execution.dry-run= # true or false.
357
+ # default: false
358
+
359
+ cucumber.execution.execution-mode.feature= # same_thread or concurrent
360
+ # default: concurrent
361
+ # same_thread - executes scenarios sequentially in the
362
+ # same thread as the parent feature
363
+ # concurrent - executes scenarios concurrently on any
364
+ # available thread
365
+
366
+ cucumber.execution.parallel.enabled= # true or false.
367
+ # default: false
368
+
369
+ cucumber.execution.parallel.config.strategy= # dynamic, fixed or custom.
370
+ # default: dynamic
371
+
372
+ cucumber.execution.parallel.config.fixed.parallelism= # positive integer.
373
+ # example: 4
374
+
375
+ cucumber.execution.parallel.config.config.fixed.max-pool-size= # positive integer.
376
+ # example: 4
377
+
378
+ cucumber.execution.parallel.config.dynamic.factor= # positive double.
379
+ # default: 1.0
380
+
381
+ cucumber.execution.parallel.config.custom.class= # class name.
382
+ # example: com.example.MyCustomParallelStrategy
383
+
384
+ cucumber.execution.exclusive-resources.<tag-name>.read-write= # a comma separated list of strings
385
+ # example: resource-a, resource-b.
386
+
387
+ cucumber.execution.exclusive-resources.<tag-name>.read= # a comma separated list of strings
388
+ # example: resource-a, resource-b
385
389
```
386
390
387
391
## Supported Discovery Selectors and Filters ##
0 commit comments