spock.lang
Annotation Type AutoCleanup


@Target(value=FIELD)
@Retention(value=RUNTIME)
public @interface AutoCleanup

Automatically cleans up the object stored in the annotated field or property at the end of its life time. More precisely, auto-cleanup of an object has the same effect as, and serves as a convenient replacement for, calling the object's close method at the end of the spec's cleanup method. @Shared objects are cleaned up at the end of the spec's cleanupSpec method.

Customizing how cleanup is performed

By default, an object is cleaned up by invoking its parameterless close() method (which is assumed to exist); visibility and return type of this method are irrelevant. If some other method should be called instead, override the annotation's value attribute:
 @AutoCleanup("dispose") // invoke the object's "dispose" method
 
Cleaning up multiple objects If multiple fields or properties are annotated with @AutoCleanup, their objects are cleaned up sequentially in reverse field/property declaration order, starting from the most derived class and walking up the inheritance chain.

Handling of exceptions during cleanup

If a cleanup operation fails with an exception, the exception is reported (just as if it had occurred in a cleanup or cleanupSpec method) and cleanup proceeds with the next annotated object. To prevent cleanup exceptions from being reported, override the annotation's quiet attribute:
 @AutoCleanup(quiet = true) // don't report exceptions
 


Optional Element Summary
 boolean quiet
           
 String value
           
 

value

public abstract String value
Default:
"close"

quiet

public abstract boolean quiet
Default:
false