Пользовательское UiObject2Condition в Котлине - PullRequest
0 голосов
/ 18 марта 2019

Можно ли расширить публичный абстрактный класс UiObject2Condition ?

Делая таким образом

class NoChildCondition: UiObject2Condition<Boolean>() {
    override fun apply(obj: UiObject2?): Boolean {
        return obj?.childCount == 0
    }
}

вызывает ошибку: public open fun apply(obj: UiObject2?): Boolean defined in circlecomplete.ciom.uitests.NoChildCondition' has no access to 'public/*package*/ abstract fun apply(p0: UiObject2!): Boolean! defined in androidx.test.uiautomator.UiObject2Condition', so it cannot override it.

Обратите внимание, что UiObject2Condition является пустым подклассом androidx.test.uiautomator.Condition<UiObject2, R> и Condition не является общедоступным.

Реализация метода apply вызывает ошибку компиляции. Не реализует его, компилирует, но вызывает ошибку во время выполнения.

Версия UIAumatmator: 2.2.0

UiObject2Conconcompilation:

package androidx.test.uiautomator;

public abstract class UiObject2Condition<R> extends Condition<UiObject2, R> {
    public UiObject2Condition() {
    }
}

Условие декомпиляции:

package androidx.test.uiautomator;

abstract class Condition<T, R> {
    Condition() {
    }

    abstract R apply(T var1);
}

1 Ответ

0 голосов
/ 20 марта 2019

Создание пакета androidx.test.uiautomator и добавление в него класса работает нормально.

package androidx.test.uiautomator

class NoChildCondition: UiObject2Condition<Boolean>() {
    override fun apply(obj: UiObject2?): Boolean {
        return obj?.childCount == 0
    }
}
...