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