If we create a unit test class and extend from GroovyTestCase we can use the very useful shoulFail() methods. The method provides a very concise way to define that a piece of code should throw an exception. We can specify the type of exception we expect to be thrown or leave it out.
class URLTest extends GroovyTestCase {
void testNoProtocol() {
// Test for exception.
shouldFail {
def url = new URL('')
}
// Test for exception and check resulting message.
def msg = shouldFail {
def url = new URL('')
}
assert 'no protocol: ' == msg // We can use the 'normal' assert.
// Test for specific exception and resulting message.
msg = shouldFail(MalformedURLException) {
def url = new URL('')
}
assertEquals 'no protocol: ', msg // We can use the JUnit assertEquals.
// Test for exception higher up in the hierarchy.
shouldFail(IOException) {
def url = new URL('')
}
}
}