Юнит тесты в Android Studio

Ответить
Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Юнит тесты в Android Studio

Сообщение Fry » 10 мар 2015, 16:14

Я так понял, в связи с выходом этого http://tools.android.com/tech-docs/unit-testing-support теперь юнит-тесты могут запускаться на jvm-машине компьютера, на котором ведется разработка.

С связи с этим, возник вопрос, стоит ли мне изучать Robolectric, который тоже запускается на jvm, или он уже потеряет смысл на фоне "официального" тест-фреймворка?
Arbeit macht Fry

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Юнит тесты в Android Studio

Сообщение Mikhail_dev » 10 мар 2015, 16:53

на сколько мне известно, Robolectric - это фреймворк для андроида, который позволяет тестировать UI, в то время как юнит тесты не позволяют этого делать и созданы для тестирования бекграунда. У гугла есть другой фреймворк - Espresso.
И да, я не совсем понимаю что значит что юнит тесты могут запускаться на jvm. А раньше они не могли?

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: Юнит тесты в Android Studio

Сообщение Fry » 10 мар 2015, 20:08

Инфа по теме тестирования в Android собирается крайне тяжело, поэтому исключительно из того, что я узнал и как понимаю:) Буду только рад, если укажите на ошибки.

Фреймворк для тестирования в Андройде основан на junit 3. Позволяет делать, в частности, юнит тестирование отдельных классов, которые используют компоненты фрейворка Andrioid и функциональное тестирование. Т.к. они юзают фрейморк Andrioid, то для их исполнения нужен Dalvik, соответственно они запускаются на устройстве или эмуляторе. Espresso, который сейчас выпустился в версии 2.0 является тонкой надслойкой над тест-фреймворком Андройда.

Robolectic (основан на junit 4) запускается изначально в jvm на том компе, на котором ведется раработка, а Андройд функционал у него мокается собственными решениями (или сторонними). Поэтому, он работает гораздо быстрее и, в частности, лучше подходит для TDD (широко используется в Яндексе, например). Как я понимаю, на нем возможно только юнит-тесты, без функциональных.

Типа инновация в студии версии 1.1 в том, что теперь можно юзать юнит тесты из стандартного тестового фрейворка на уровне jvm. Вот поэтому у меня и возник вопрос о жизнеспособности Robolectic в этих условиях.

ЗЫ. А, ну и если мы делаем юнит-тесты классов, в которых не юзается Андройд, то их можно делать на чистом junit, соответственно в jvm.
Arbeit macht Fry

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Юнит тесты в Android Studio

Сообщение rezak90 » 11 мар 2015, 15:10

Все зависит от того какие тесты запускаются. Если InstrumentalTest, TestCase (я могу ошибаться в названиях классов, на память не помню) то выполняются конечно в JVM. Если используется контекст приложения, UI то необходим Андроид. Лично опыта с Roboelectric не имел, но помню что рассматривал его. Но не выбрал по причине того что он "маленький". Самый большой функционал и самым проверенным является Robotium. Андроид его и использует. Espresso 2.0 я еще не смотрел, но год назад эта либа была еще сыровата, потому в коммерческих проектах не стал юзать.
R.id.team
Политика на форуме запрещена

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Юнит тесты в Android Studio

Сообщение altwin » 11 мар 2015, 16:17

Fry писал(а):Я так понял, в связи с выходом этого http://tools.android.com/tech-docs/unit-testing-support теперь юнит-тесты могут запускаться на jvm-машине компьютера, на котором ведется разработка.

С связи с этим, возник вопрос, стоит ли мне изучать Robolectric, который тоже запускается на jvm, или он уже потеряет смысл на фоне "официального" тест-фреймворка?
У вас есть свободное время и вы учитесь новому, пытаетесь развиваться ? - да стоит.
У вас есть есть проект за который вам платят деньги? - забудьте.
Изображение

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: Юнит тесты в Android Studio

Сообщение Fry » 11 мар 2015, 22:52

rezak90 писал(а):Лично опыта с Roboelectric не имел, но помню что рассматривал его. Но не выбрал по причине того что он "маленький". Самый большой функционал и самым проверенным является Robotium. Андроид его и использует. Espresso 2.0 я еще не смотрел, но год назад эта либа была еще сыровата, потому в коммерческих проектах не стал юзать.
Помнится в вебинаре вы рассказывали именно об Эспрессо )

А почему Roboelectric маленький, что в нем не хватало?
altwin писал(а): У вас есть есть проект за который вам платят деньги? - забудьте.
Вы это об Robolectric, или про тестирование вообще? :)
Arbeit macht Fry

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Юнит тесты в Android Studio

Сообщение rezak90 » 12 мар 2015, 01:45

Fry писал(а):Помнится в вебинаре вы рассказывали именно об Эспрессо )
Espresso удобней, меньше кода. На тот момент был еще сыроват и не все плюшки поддерживал в то время как Robotium'y уже несколько лет и все шишки набиты.
Fry писал(а):А почему Roboelectric маленький, что в нем не хватало?
Если бы я помнил))) Когда поднялся вопрос что использовать, помню что Roboelectric'a не хватало.
В общем Robotium вполне устраивает во всех планах.
R.id.team
Политика на форуме запрещена

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Юнит тесты в Android Studio

Сообщение altwin » 12 мар 2015, 08:07

Fry писал(а): Вы это об Robolectric, или про тестирование вообще? :)
смотря кто платит, если вы работаете в американской компании или в европе/Сингапуре в большинстве случаев без тестов платить вам быстро перестанут. ;)
Изображение

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: Юнит тесты в Android Studio

Сообщение Fry » 12 мар 2015, 09:44

rezak90, понятно. Пока больше сколоняюсь к Эспрессо, хотя инфы по нему явно меньше. По Роботиуму еще и книжка есть )

altwin, помимо своих проектов, смотрю исключительно на Запад. Поэтому навыки тестирования критичны. Да и в России во многих вакансиях это требуется.
Arbeit macht Fry

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: Юнит тесты в Android Studio

Сообщение Fry » 12 мар 2015, 23:25

И раз уж мы тут собрались :)

1. Часто можно увидеть выражение типа "проект покрыт тестами на такое-то количество процентов". Каким образом в андройде это вычисляется?

2. На вскидку, при тестировании приложений насколько часто приходится писать на чистом junit (т.е. тестируя классы, в которых нет андройда) ? На сколько вообще pure junit востребован в андройде?
Arbeit macht Fry

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Юнит тесты в Android Studio

Сообщение doter.ua » 12 мар 2015, 23:37

Fry писал(а):И раз уж мы тут собрались :)

1. Часто можно увидеть выражение типа "проект покрыт тестами на такое-то количество процентов". Каким образом в андройде это вычисляется?

2. На вскидку, при тестировании приложений насколько часто приходится писать на чистом junit (т.е. тестируя классы, в которых нет андройда) ? На сколько вообще pure junit востребован в андройде?
Можно 95% приложения написать на чистой яве, и вывести результат в TextView (типа 5%). Все зависит от проекта.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Юнит тесты в Android Studio

Сообщение rezak90 » 12 мар 2015, 23:46

Fry писал(а):1. Часто можно увидеть выражение типа "проект покрыт тестами на такое-то количество процентов". Каким образом в андройде это вычисляется?
Вычисляется легко. Берешь любой анализатор который вычисляет процент покрытия кода тестами. Последний раз я для этого поднимал сервак Sonar. Есть более быстрые способы, но лучше сонара я пока не встречал.
Fry писал(а):2. На вскидку, при тестировании приложений насколько часто приходится писать на чистом junit (т.е. тестируя классы, в которых нет андройда) ? На сколько вообще pure junit востребован в андройде?
Я обычно пишу на чисто junit если это функциональные тесты. Потому что использование фреймворков только тормозит выполнение самих тестов.
R.id.team
Политика на форуме запрещена

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: Юнит тесты в Android Studio

Сообщение Fry » 13 мар 2015, 10:56

rezak90 писал(а): Я обычно пишу на чисто junit если это функциональные тесты. Потому что использование фреймворков только тормозит выполнение самих тестов.
А как можно написать на чистом junit функциональный тест? Как, не используя фреймворк, найти кнопку на активити и понажимать ее, например?
Arbeit macht Fry

Ответить