Non-deterministic Testing

Sometimes you have to work with code that is non-deterministic in nature. This is not the preferred scenario for writing tests, but if you have no choice then Kotest provides several functions that help writing tests where the happy path can take a variable amount of time to pass successfully.

FunctionRole
EventuallyUsed to ensure that a test will eventually pass within a specified time duration. The test is repeatedly executed until the test passes or the duration expires.
ContinuallyUsed to ensure that a test continually passes for a period of time. Will repeatedly execute a test until the duration has expired or the test fails.
UntilUsed to ensure that a predicate will eventually hold true within a specified time duration. The predicate is repeatedly executed until true or the duration expires.
RetryUsed to ensure that a test willi eventually pass within a given number of retries. The test is repeatedly executed until the test passes or the iteration count is reached.