Skip to content

Commit ad4c5d7

Browse files
committed
Document exception handling for failed assumptions
Closes #3789
1 parent 2ad0bea commit ad4c5d7

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

documentation/src/docs/asciidoc/user-guide/writing-tests.adoc

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -352,10 +352,21 @@ Naturally, legacy tests based on the JUnit 4 programming model can continue usin
352352
[[writing-tests-assumptions]]
353353
=== Assumptions
354354

355-
JUnit Jupiter comes with a subset of the assumption methods that JUnit 4 provides and
355+
Assumptions are typically used whenever it does not make sense to continue execution of a
356+
given test — for example, if the test depends on something that does not exist in the
357+
current runtime environment.
358+
359+
* When an assumption is valid, the assumption method does not throw an exception, and
360+
execution of the test continues as usual.
361+
* When an assumption is invalid, the assumption method throws an exception of type
362+
`org.opentest4j.TestAbortedException` to signal that the test should be aborted instead
363+
of marked as a failure.
364+
365+
JUnit Jupiter comes with a subset of the _assumption_ methods that JUnit 4 provides and
356366
adds a few that lend themselves well to being used with Java 8 lambda expressions and
357-
method references. All JUnit Jupiter assumptions are static methods in the
358-
`{Assumptions}` class.
367+
method references.
368+
369+
All JUnit Jupiter assumptions are static methods in the `{Assumptions}` class.
359370

360371
[source,java,indent=0]
361372
----
@@ -371,7 +382,8 @@ to signal that a test should be aborted instead of marked as a failure.
371382

372383
JUnit Jupiter provides robust support for handling test exceptions. This includes the
373384
built-in mechanisms for managing test failures due to exceptions, the role of exceptions
374-
in implementing assertions, and how to specifically assert non-throwing conditions in code.
385+
in implementing assertions and assumptions, and how to specifically assert non-throwing
386+
conditions in code.
375387

376388
[[writing-tests-exceptions-uncaught]]
377389
==== Uncaught Exceptions
@@ -380,6 +392,16 @@ In JUnit Jupiter, if an exception is thrown from a test method, a lifecycle meth
380392
extension and not caught within that test method, lifecycle method, or extension, the
381393
framework will mark the test or test class as failed.
382394

395+
[TIP]
396+
====
397+
Failed assumptions deviate from this general rule.
398+
399+
In contrast to failed assertions, failed assumptions do not result in a test failure;
400+
rather, a failed assumption results in a test being aborted.
401+
402+
See <<writing-tests-assumptions>> for further details and examples.
403+
====
404+
383405
In the following example, the `failsDueToUncaughtException()` method throws an
384406
`ArithmeticException`. Since the exception is not caught within the test method, JUnit
385407
Jupiter will mark the test as failed.

0 commit comments

Comments
 (0)