Implement expected exception for AnnotationSpec #559
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
JUnit's tests can test an exception is thrown by using a parameter in the
@Test
annotation. https://github.com/junit-team/junit4/wiki/exception-testingAlthough we support
shouldThrow
and it's variants, we're trying to improve the likelihood of people using KotlinTest instead of JUnit, by making the migration as easy as possible. Because of this objective, this commit implements a parameter in@Test
, to enable users to configure an expected exception just like JUnit's.To do this, this commit creates the parameter and annotation processing for it.
To reuse code, this commit moves some internal classes around, to enable
kotlintest-core
module to use some of the classes fromkotlintest-assertions
andkotlintest-runner-jvm
. This doesn't impact any user, as the moved classes and functions are internal/private.To test that the new behavior works, this commit uses
SpecLevelExtension
to map specific tests with specific behaviors. It's not very pretty, but it works.Fixes #527