Size: a a a

2021 March 31

A

Aj in Kotlin Android
does anybody know what permissions the vendor/build.prop should be?
источник

TT

Turalllb Turalll in Kotlin Android
androidTestImplementation("androidx.test:core-ktx:1.3.0")
androidTestImplementation("androidx.test:core:1.3.0")
а что это такое? если использовать это то у меня в тестах появляется возможность использовать андроидовские пакеты, но при запуске все равно пишет, что не видит .. Но видел примеры, что кто-то запускает активность с помощью этого
источник

TT

Turalllb Turalll in Kotlin Android
Andrey Mischenko
Я тут посмотрел, как я вижу Kotest построен на раннере для Junit 5 так что он не будет работать из коробки для Android Instrumentation тестов, поддерживается только Junit 4 раннер официально: https://issuetracker.google.com/issues/127100532
в koTest в 19 году еще экспериментально добавили робоэлектрик, разве этого не достаточно для интеграционных с андроид тестов
источник

AM

Andrey Mischenko in Kotlin Android
Роболектрик это не тоже самое, хотя часть тестов конечно покрывает, можно похоливарить на эту тему, но все же роболектрик это не настоящий тест на девайсе и на нем работает далеко не все
источник

TT

Turalllb Turalll in Kotlin Android
Andrey Mischenko
Роболектрик это не тоже самое, хотя часть тестов конечно покрывает, можно похоливарить на эту тему, но все же роболектрик это не настоящий тест на девайсе и на нем работает далеко не все
ну создать фрагмент и инициировать клик на кнопку получится? чем он не полноценен
источник

AM

Andrey Mischenko in Kotlin Android
Тем фактом что не все приложения состоят только из фрагментов и кнопок?
источник

AM

Andrey Mischenko in Kotlin Android
Ну например из практики того что никак не будет работать на роболектрик, но то что лично мы тестируем это никакой нативный код (тестировать на x86 явно мало), ничего из API камеры и звука
источник

TT

Turalllb Turalll in Kotlin Android
Andrey Mischenko
Ну например из практики того что никак не будет работать на роболектрик, но то что лично мы тестируем это никакой нативный код (тестировать на x86 явно мало), ничего из API камеры и звука
мы такого тестировать не будем, но интресно, что можно тестировать из апи камеры? ну их апи что вернет, то вернет и с этим ничего не сделать.  И как вообще в идеале должен выглядеть такой тест.  Я задаю довольно глупые вопросы для тех кто пишет давно тесты, у меня пока проблема с придумыванием тестов вообще
источник

AM

Andrey Mischenko in Kotlin Android
Не из апи камеры, а то как твой код с ним работает, может что-то записать, обработать коллбэки и не упасть
Я уже молчу про скриншот тестирование или вообще что хоть что-то на экране видно, но это уже больше к вопросу как полезны роболектрик тесты, насколько я вижу его больше используют не как замену инструментейшену, а ленивый способ запустить unit тесты не абстрагирую апи платформы
источник

TT

Turalllb Turalll in Kotlin Android
ну да, мне вот и надо не абстрагироваться от апи платформы. Но это для начала. Дальше возможно захочется больше возможностей.
источник

TT

Turalllb Turalll in Kotlin Android
Andrey Mischenko
Не из апи камеры, а то как твой код с ним работает, может что-то записать, обработать коллбэки и не упасть
Я уже молчу про скриншот тестирование или вообще что хоть что-то на экране видно, но это уже больше к вопросу как полезны роболектрик тесты, насколько я вижу его больше используют не как замену инструментейшену, а ленивый способ запустить unit тесты не абстрагирую апи платформы
ну а как же тестировать это чтобы был реальный интрументальный тест, для этого ведь нужен девайс?
источник

TT

Turalllb Turalll in Kotlin Android
а робоэлектрик как раз для того чтобы эмулировать среду, без апи камеры и т.д. чтобы тесты быстро выполнялись
источник

AM

Andrey Mischenko in Kotlin Android
Все так, на крайний случай эмулятор

Про скорость выполнения все не так радужно, я видел тесты больших сьюитов роболектрик на эмуляторе, не сильно быстрее, но не исключаю что зависит от специфики тестов

Я не отрицаю что роболектрик имеет свою нишу, просто это никак не замена реальным тестам на девайсе, а многие случаи он просто заменяется unit тестами (которые на порядок быстрее кстати)
источник

TT

Turalllb Turalll in Kotlin Android
Andrey Mischenko
Все так, на крайний случай эмулятор

Про скорость выполнения все не так радужно, я видел тесты больших сьюитов роболектрик на эмуляторе, не сильно быстрее, но не исключаю что зависит от специфики тестов

Я не отрицаю что роболектрик имеет свою нишу, просто это никак не замена реальным тестам на девайсе, а многие случаи он просто заменяется unit тестами (которые на порядок быстрее кстати)
ну вот хотел написать такой тест: Есть кнопка по клику на нее в сервис аналитики отправляется событие. Хотел имитировать клик и проверить долетело ли до сервиса аналитики нужное событие. То есть проверка на то не выпилил ли кто-то случайно отправку события по клику.  Для этого мне не хватает моделирования платформы, как только идет обращение в тесте к любому андроид пакету, то получаю исключение
источник

AM

Andrey Mischenko in Kotlin Android
Выглядит как что-то что должно покрываться юнит тестом
источник

TT

Turalllb Turalll in Kotlin Android
Andrey Mischenko
Выглядит как что-то что должно покрываться юнит тестом
ну а как я могу защититься от того, что при клике на кнопку не отправится событие ? что-то юнит вариант не приходит в голову
источник

AM

Andrey Mischenko in Kotlin Android
Ну есть вью модель, или что там у вас, презентер, есть метод обрабатывающий клик на кнопку, его вызвать и посмотреть что он дёрнул метод трекера с нужными параметрами
источник

TT

Turalllb Turalll in Kotlin Android
Andrey Mischenko
Ну есть вью модель, или что там у вас, презентер, есть метод обрабатывающий клик на кнопку, его вызвать и посмотреть что он дёрнул метод трекера с нужными параметрами
ааа..да интересная мысль. Я помню давно читал о том, как упростить себе жизнь, чтобы можно было легко писать тесты и главное это тупой UI. У нас сейчас это не так.. я говорил лиду что мы с этим столкнемся когда нибудь и вот оно. У нас вьюмодель не может быть проинициализирована не проинициализировав саму вью..
источник

TT

Turalllb Turalll in Kotlin Android
спасибо, вроде мелочь, но из-за этого я начал писать интеграционный тест, вместо юнит
источник

D

Dmitry in Kotlin Android
Turalllb Turalll
ну создать фрагмент и инициировать клик на кнопку получится? чем он не полноценен
Роболектрик может создать мок фрагмента, вместо того чтобы создавать фрагмент.
источник