Функция @VisibleForTesting () не вызывает ошибку компиляции для производственного кода при использовании - PullRequest
0 голосов
/ 17 декабря 2018

В приложении для Android я пытался использовать @VisibleForTesting() согласно https://developer.android.com/reference/android/support/annotation/VisibleForTesting

@VisibleForTesting()
void myFunction(String id) {
    doSomething(id);
}

Пробовал и для кода Java, и для кода Котлина.

Я явно вызвал рабочий вызовпубличная функция, которая помечена @VisibleForTesting().Когда я компилирую, я не вижу никаких ошибок или предупреждений, чтобы помешать мне использовать его в производственном коде.

Я что-то пропустил?

Ответы [ 2 ]

0 голосов
/ 02 августа 2019

Это будет установлено Android Lint и по умолчанию будет предупреждением.

Вы можете изменить это, увеличив уровень серьезности до ошибки в build.gradle:

android {
    lintOptions {
        error("VisibleForTests")
    }
}
0 голосов
/ 17 декабря 2018

Чтение из документации:

При желании вы можете указать, какой должна быть видимость, если бы не тестирование;это позволяет инструментам перехватывать непреднамеренный доступ из производственного кода.

Пример:

@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
void myFunction(String id) {
    doSomething(id);
}

Так что в вашем случае вы пропускаете необязательный параметр otherwise в аннотации.Без этого атрибута вы не сможете сделать никаких утверждений, чтобы предотвратить несанкционированные вызовы метода из производственного кода, так как контролер не может знать, какие вызовы следует предотвратить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...