Android AlarmManager срабатывает каждые 10 минут

JUnit позволяет предоставлять правила через поле тестового класса или метод getter.

То, что вы отметили в Kotlin, является свойством , хотя JUnit не распознает.

Вот возможные способы задания правила JUnit в Kotlin:

Через аннотированный метод геттера

Из M13 аннотация процессор поддерживает цели аннотации . Однако, когда вы пишете

@Rule
public val mActivityRule: ActivityTestRule = ActivityTestRule(javaClass())

, аннотация будет использовать цель property по умолчанию (не отображается в Java).

Однако вы можете аннотировать свойство getter, которое также public и, таким образом, удовлетворяет требованиям JUnit для правила getter:

@get:Rule
public val mActivityRule: ActivityTestRule = ActivityTestRule(javaClass())

В качестве альтернативы вы можете определить правило с помощью функции вместо свойства (достижение вручную того же результата, что и для @get:Rule).

Через аннотированное общедоступное поле

Kotlin также позволяет , поскольку бета-кандидат детерминистически компилирует свойства в поля на JVM, и в этом случае применяются аннотации и модификаторы к сгенерированному полю. Это делается с помощью аннотации свойства Kotlin @JvmField , как , на которую отвечает @jkschneider .


Боковое примечание: обязательно префикс Rule с символом @, так как теперь поддерживается только поддерживаемый синтаксис аннотаций и избегать @publicField, так как он скоро будет сброшен .

21
задан Ori Wasserman 23 April 2017 в 17:02
поделиться