zio.test
ZIO Test is a featherweight testing library for effectful programs.
The library imagines every spec as an ordinary immutable value, providing tremendous potential for composition. Thanks to tight integration with ZIO, specs can use resources (including those requiring disposal), have well- defined linear and parallel semantics, and can benefit from a host of ZIO combinators.
import zio.test._
import zio.test.environment.Live
import zio.clock.nanoTime
import Assertion.isGreaterThan
object MyTest extends DefaultRunnableSpec {
def spec = suite("clock")(
testM("time is non-zero") {
assertM(Live.live(nanoTime))(isGreaterThan(0))
}
)
}
Type members
Classlikes
The Annotations
trait provides access to an annotation map that tests can
add arbitrary annotations to. Each annotation consists of a string
identifier, an initial value, and a function for combining two values.
Annotations form monoids and you can think of Annotations
as a more
structured logging service or as a super polymorphic version of the writer
monad effect.
The Annotations
trait provides access to an annotation map that tests can
add arbitrary annotations to. Each annotation consists of a string
identifier, an initial value, and a function for combining two values.
Annotations form monoids and you can think of Annotations
as a more
structured logging service or as a super polymorphic version of the writer
monad effect.
An Assertion[A]
is capable of producing assertion results on an A
. As a
proposition, assertions compose using logical conjunction and disjunction,
and can be negated.
An Assertion[A]
is capable of producing assertion results on an A
. As a
proposition, assertions compose using logical conjunction and disjunction,
and can be negated.
- Companion:
- object
An AssertionM[A]
is capable of producing assertion results on an A
. As a
proposition, assertions compose using logical conjunction and disjunction,
and can be negated.
An AssertionM[A]
is capable of producing assertion results on an A
. As a
proposition, assertions compose using logical conjunction and disjunction,
and can be negated.
- Companion:
- object
An AssertionValue
keeps track of a assertion and a value, existentially
hiding the type. This is used internally by the library to provide useful
error messages in the event of test failures.
An AssertionValue
keeps track of a assertion and a value, existentially
hiding the type. This is used internally by the library to provide useful
error messages in the event of test failures.
- Companion:
- object
A BoolAlgebra[A]
is a description of logical operations on values of type
A
.
A BoolAlgebra[A]
is a description of logical operations on values of type
A
.
- Companion:
- object
Proxy methods to call package private methods from the macro
Proxy methods to call package private methods from the macro
- Companion:
- class
CustomAssertion allows users to create their own custom assertions for use in
assertTrue
. They are constructed with CustomAssertion.make
.
CustomAssertion allows users to create their own custom assertions for use in
assertTrue
. They are constructed with CustomAssertion.make
.
// Definition
sealed trait Pet
case class Dog(hasBone: Boolean) extends Pet
case class Fish(bubbles: Double) extends Pet
case class Cat(livesRemaining: Int) extends Color
val lives =
CustomAssertion.make[Pet] {
case Cat(livesRemaining) => Right(livesRemaining)
case other => Left(s"Expected $$other to be Cat")
}
// Usage
suite("custom assertions")(
test("as even") {
val pet: Option[Pet] = Some(Cat(8))
assertTrue(pet.is(_.some.custom(lives)) == 8)
}
)
- Companion:
- object
Syntax for writing test like
Syntax for writing test like
object MySpec extends DefaultMutableRunnableSpec {
suite("foo") {
testM("name") {
} @@ ignore
test("name 2")
}
suite("another suite") {
test("name 3")
}
}
A default runnable spec that provides testable versions of all of the modules in ZIO (Clock, Random, etc).
A default runnable spec that provides testable versions of all of the modules in ZIO (Clock, Random, etc).
An ExecutedSpec
is a spec that has been run to produce test results.
An ExecutedSpec
is a spec that has been run to produce test results.
- Companion:
- object
- Companion:
- object
FailureDetails
keeps track of details relevant to failures.
FailureDetails
keeps track of details relevant to failures.
A Gen[R, A]
represents a generator of values of type A
, which requires an
environment R
. Generators may be random or deterministic.
A Gen[R, A]
represents a generator of values of type A
, which requires an
environment R
. Generators may be random or deterministic.
- Companion:
- object
GenFailureDetails
keeps track of relevant information related to a failure
in a generative test.
GenFailureDetails
keeps track of relevant information related to a failure
in a generative test.
- Companion:
- object
Syntax for writing test like
Syntax for writing test like
object MySpec extends MutableRunnableSpec(layer, aspect) {
suite("foo") {
testM("name") {
} @@ ignore
test("name 2")
}
suite("another suite") {
test("name 3")
}
}
A RunnableSpec
has a main function and can be run by the JVM / Scala.js.
A RunnableSpec
has a main function and can be run by the JVM / Scala.js.
A sample is a single observation from a random variable, together with a tree of "shrinkings" used for minimization of "large" failures.
A sample is a single observation from a random variable, together with a tree of "shrinkings" used for minimization of "large" failures.
- Companion:
- object
A Spec[R, E, T]
is the backbone of ZIO Test. Every spec is either a
suite, which contains other specs, or a test of type T
. All specs require
an environment of type R
and may potentially fail with an error of type
E
.
A Spec[R, E, T]
is the backbone of ZIO Test. Every spec is either a
suite, which contains other specs, or a test of type T
. All specs require
an environment of type R
and may potentially fail with an error of type
E
.
- Companion:
- object
An annotation map keeps track of annotations of different types.
An annotation map keeps track of annotations of different types.
- Companion:
- object
A TestAnnotationRenderer
knows how to render test annotations.
A TestAnnotationRenderer
knows how to render test annotations.
- Companion:
- object
A TestAspect
is an aspect that can be weaved into specs. You can think of
an aspect as a polymorphic function, capable of transforming one test into
another, possibly enlarging the environment or error type.
A TestAspect
is an aspect that can be weaved into specs. You can think of
an aspect as a polymorphic function, capable of transforming one test into
another, possibly enlarging the environment or error type.
- Companion:
- object
The TestConfig
service provides access to default configuation settings
used by ZIO Test, including the number of times to repeat tests to ensure
they are stable, the number of times to retry flaky tests, the sufficient
number of samples to check from a random variable, and the maximum number
of shrinkings to minimize large failures.
The TestConfig
service provides access to default configuation settings
used by ZIO Test, including the number of times to repeat tests to ensure
they are stable, the number of times to retry flaky tests, the sufficient
number of samples to check from a random variable, and the maximum number
of shrinkings to minimize large failures.
A TestExecutor[R, E]
is capable of executing specs that require an
environment R
and may fail with an E
.
A TestExecutor[R, E]
is capable of executing specs that require an
environment R
and may fail with an E
.
- Companion:
- object
TestPlatform
provides information about the platform tests are being run on
to enable platform specific test configuration.
TestPlatform
provides information about the platform tests are being run on
to enable platform specific test configuration.
A TestRunner[R, E]
encapsulates all the logic necessary to run specs that
require an environment R
and may fail with an error E
. Test runners
require a test executor, a platform, and a reporter.
A TestRunner[R, E]
encapsulates all the logic necessary to run specs that
require an environment R
and may fail with an error E
. Test runners
require a test executor, a platform, and a reporter.
TestVersion
provides information about the Scala version tests are being
run on to enable platform specific test configuration.
TestVersion
provides information about the Scala version tests are being
run on to enable platform specific test configuration.
Types
An Annotated[A]
contains a value of type A
along with zero or more test
annotations.
An Annotated[A]
contains a value of type A
along with zero or more test
annotations.
A TestAspectAtLeast[R]
is a TestAspect
that requires at least an R
in
its environment.
A TestAspectAtLeast[R]
is a TestAspect
that requires at least an R
in
its environment.
A TestAspectPoly
is a TestAspect
that is completely polymorphic, having
no requirements on error or environment.
A TestAspectPoly
is a TestAspect
that is completely polymorphic, having
no requirements on error or environment.
A TestReporter[E]
is capable of reporting test results with error type
E
.
A TestReporter[E]
is capable of reporting test results with error type
E
.
A ZSpec[R, E]
is the canonical spec for testing ZIO programs. The spec's
test type is a ZIO effect that requires an R
and might fail with an E
.
A ZSpec[R, E]
is the canonical spec for testing ZIO programs. The spec's
test type is a ZIO effect that requires an R
and might fail with an E
.
A ZTest[R, E]
is an effectfully produced test that requires an R
and
may fail with an E
.
A ZTest[R, E]
is an effectfully produced test that requires an R
and
may fail with an E
.
A ZRTestEnv
is an alias for all ZIO provided
Restorable
TestEnvironment objects
A ZRTestEnv
is an alias for all ZIO provided
Restorable
TestEnvironment objects
Value members
Concrete methods
Checks the test passes for "sufficient" numbers of samples from the given random variable.
Checks the test passes for "sufficient" numbers of samples from the given random variable.
A version of check
that accepts two random variables.
A version of check
that accepts two random variables.
A version of check
that accepts three random variables.
A version of check
that accepts three random variables.
A version of check
that accepts four random variables.
A version of check
that accepts four random variables.
A version of check
that accepts five random variables.
A version of check
that accepts five random variables.
A version of check
that accepts six random variables.
A version of check
that accepts six random variables.
A version of check
that accepts seven random variables.
A version of check
that accepts seven random variables.
A version of check
that accepts height random variables.
A version of check
that accepts height random variables.
Checks the test passes for all values from the given random variable. This
is useful for deterministic Gen
that comprehensively explore all
possibilities in a given domain.
Checks the test passes for all values from the given random variable. This
is useful for deterministic Gen
that comprehensively explore all
possibilities in a given domain.
A version of checkAll
that accepts two random variables.
A version of checkAll
that accepts two random variables.
A version of checkAll
that accepts three random variables.
A version of checkAll
that accepts three random variables.
A version of checkAll
that accepts four random variables.
A version of checkAll
that accepts four random variables.
A version of checkAll
that accepts five random variables.
A version of checkAll
that accepts five random variables.
A version of checkAll
that accepts six random variables.
A version of checkAll
that accepts six random variables.
A version of checkAll
that accepts seven random variables.
A version of checkAll
that accepts seven random variables.
A version of checkAll
that accepts height random variables.
A version of checkAll
that accepts height random variables.
Checks the effectual test passes for all values from the given random
variable. This is useful for deterministic Gen
that comprehensively
explore all possibilities in a given domain.
Checks the effectual test passes for all values from the given random
variable. This is useful for deterministic Gen
that comprehensively
explore all possibilities in a given domain.
A version of checkAllM
that accepts two random variables.
A version of checkAllM
that accepts two random variables.
A version of checkAllM
that accepts three random variables.
A version of checkAllM
that accepts three random variables.
A version of checkAllM
that accepts four random variables.
A version of checkAllM
that accepts four random variables.
A version of checkAllM
that accepts five random variables.
A version of checkAllM
that accepts five random variables.
A version of checkAllM
that accepts six random variables.
A version of checkAllM
that accepts six random variables.
A version of checkAllM
that accepts seven random variables.
A version of checkAllM
that accepts seven random variables.
A version of checkAllM
that accepts height random variables.
A version of checkAllM
that accepts height random variables.
Checks in parallel the effectual test passes for all values from the given
random variable. This is useful for deterministic Gen
that
comprehensively explore all possibilities in a given domain.
Checks in parallel the effectual test passes for all values from the given
random variable. This is useful for deterministic Gen
that
comprehensively explore all possibilities in a given domain.
A version of checkAllMPar
that accepts two random variables.
A version of checkAllMPar
that accepts two random variables.
A version of checkAllMPar
that accepts three random variables.
A version of checkAllMPar
that accepts three random variables.
A version of checkAllMPar
that accepts four random variables.
A version of checkAllMPar
that accepts four random variables.
A version of checkAllMPar
that accepts five random variables.
A version of checkAllMPar
that accepts five random variables.
A version of checkAllMPar
that accepts six random variables.
A version of checkAllMPar
that accepts six random variables.
Checks the effectual test passes for "sufficient" numbers of samples from the given random variable.
Checks the effectual test passes for "sufficient" numbers of samples from the given random variable.
A version of checkM
that accepts two random variables.
A version of checkM
that accepts two random variables.
A version of checkM
that accepts three random variables.
A version of checkM
that accepts three random variables.
A version of checkM
that accepts four random variables.
A version of checkM
that accepts four random variables.
A version of checkM
that accepts five random variables.
A version of checkM
that accepts five random variables.
A version of checkM
that accepts six random variables.
A version of checkM
that accepts six random variables.
A version of checkM
that accepts seven random variables.
A version of checkM
that accepts seven random variables.
A version of checkM
that accepts height random variables.
A version of checkM
that accepts height random variables.
Checks the test passes for the specified number of samples from the given random variable.
Checks the test passes for the specified number of samples from the given random variable.
Checks the effectual test passes for the specified number of samples from the given random variable.
Checks the effectual test passes for the specified number of samples from the given random variable.
Creates a failed test result with the specified runtime cause.
Creates a failed test result with the specified runtime cause.
Passes platform specific information to the specified function, which will use that information to create a test. If the platform is neither ScalaJS nor the JVM, an ignored test result will be returned.
Passes platform specific information to the specified function, which will use that information to create a test. If the platform is neither ScalaJS nor the JVM, an ignored test result will be returned.
Builds a suite containing a number of other specs.
Builds a suite containing a number of other specs.
Builds an effectual suite containing a number of other specs.
Builds an effectual suite containing a number of other specs.
Builds a spec with a single pure test.
Builds a spec with a single pure test.
Builds a spec with a single effectful test.
Builds a spec with a single effectful test.
Passes version specific information to the specified function, which will use that information to create a test. If the version is neither Dotty nor Scala 2, an ignored test result will be returned.
Passes version specific information to the specified function, which will use that information to create a test. If the version is neither Dotty nor Scala 2, an ignored test result will be returned.
Inherited methods
Returns either Right
if the specified string type checks as valid Scala
code or Left
with an error message otherwise. Dies with a runtime
exception if specified string cannot be parsed or is not a known value at
compile time.
Returns either Right
if the specified string type checks as valid Scala
code or Left
with an error message otherwise. Dies with a runtime
exception if specified string cannot be parsed or is not a known value at
compile time.
- Inherited from:
- CompileVariants