Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add tests for @FailsWith error message #2063

Merged
merged 1 commit into from
Dec 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/release_notes.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ include::include.adoc[]
* Add new well-known versions to `Jvm` helper to support versions up to 29 spockPull:2057[]
** Built-in extensions have been updated to use this new interface where applicable.
* Add best-effort error reporting for interactions on final methods when using the `byte-buddy` mock maker spockIssue:2039[]
* Add support for `@FailsWith` to assert exception message spockIssue:2039[]
* Add support for `@FailsWith` to assert an exception message spockIssue:2039[]
* Improve `@Timeout` extension will now use virtual threads if available spockPull:1986[]
* Improve mock argument matching, types constraints or arguments in interactions can now handle primitive types like `_ as int` spockIssue:1974[]
* Improve `verifyEach` to accept an optional second index parameter for the assertion block closure spockPull:2043[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,13 @@ import org.spockframework.runtime.InvalidSpecException
import spock.lang.FailsWith
import spock.lang.Specification

import org.spockframework.runtime.SpockComparisonFailure

/**
*
* @author Peter Niederwieser
*/
class FailsWithOnMethod extends Specification {
class FailsWithOnMethod extends EmbeddedSpecification {
@FailsWith(IndexOutOfBoundsException)
def ex1() {
given:
Expand All @@ -45,6 +47,41 @@ class FailsWithOnMethod extends Specification {
expect: true
}

@FailsWith(
value = RuntimeException,
expectedMessage = "My message"
)
def withMessage() {
given:
throw new RuntimeException("My message")
}

def "@FailsWith can assert exception message"() {
when:
runner.runSpecBody """
@FailsWith(
value = RuntimeException,
expectedMessage = "My message"
)
def foo() {
given:
throw new RuntimeException("Not my message")
}
"""

then:
SpockComparisonFailure e = thrown()
def expected = """Condition not satisfied:

e.value == expectedMessage
| | |
| | My message
| Not my message
java.lang.RuntimeException: Not my message"""

e.message.startsWith(expected)

}

@FailsWith(ConditionFailedWithExceptionError)
def "can handle ConditionFailedWithExceptionError"() {
Expand Down Expand Up @@ -117,4 +154,3 @@ class MySpec extends Specification {
e.message == "@FailsWith needs to refer to an exception type, but does refer to 'java.util.List'"
}
}

Loading