Package spock.lang

Annotation Type AutoCleanup


@Target(FIELD)
@Retention(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

    Optional Elements
    Modifier and Type Optional Element Description
    boolean quiet  
    String value  
  • Element Details

    • value

      String value
      Default:
      "close"
    • quiet

      boolean quiet
      Default:
      false