{% setvar book_path %}/reference/androidx/_book.yaml{% endsetvar %} {% include "_shared/_reference-head-tags.html" %}

VisibleForTesting

@Retention(value = AnnotationRetention.BINARY)
public annotation VisibleForTesting


Denotes that the class, method or field has its visibility relaxed, so that it is more widely visible than otherwise necessary to make code testable.

You can optionally specify what the visibility should have been if not for testing; this allows tools to catch unintended access from within production code.

Example:

@VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
public String printDiagnostics() { ... }

If not specified, the intended visibility is assumed to be private.

Summary

Constants

static final int
NONE = 5

The annotated element should never be called from production code, only from tests.

static final int

The annotated element would have "package private" visibility

static final int

The annotated element would have "private" visibility

static final int

The annotated element would have "protected" visibility

Public constructors

VisibleForTesting(int otherwise)

Public methods

final int

The visibility the annotated element would have if it did not need to be made visible for testing.

Constants

NONE

public static final int NONE = 5

The annotated element should never be called from production code, only from tests.

This is equivalent to @RestrictTo.Scope.TESTS.

PACKAGE_PRIVATE

public static final int PACKAGE_PRIVATE = 3

The annotated element would have "package private" visibility

PRIVATE

public static final int PRIVATE = 2

The annotated element would have "private" visibility

PROTECTED

public static final int PROTECTED = 4

The annotated element would have "protected" visibility

Public constructors

VisibleForTesting

public VisibleForTesting(int otherwise)

Public methods

getOtherwise

public final int getOtherwise()

The visibility the annotated element would have if it did not need to be made visible for testing.