Страница 1 из 1
Юнит тесты в Android Studio
Добавлено: 10 мар 2015, 16:14
Fry
Я так понял, в связи с выходом этого
http://tools.android.com/tech-docs/unit-testing-support теперь юнит-тесты могут запускаться на jvm-машине компьютера, на котором ведется разработка.
С связи с этим, возник вопрос, стоит ли мне изучать Robolectric, который тоже запускается на jvm, или он уже потеряет смысл на фоне "официального" тест-фреймворка?
Re: Юнит тесты в Android Studio
Добавлено: 10 мар 2015, 16:53
Mikhail_dev
на сколько мне известно, Robolectric - это фреймворк для андроида, который позволяет тестировать UI, в то время как юнит тесты не позволяют этого делать и созданы для тестирования бекграунда. У гугла есть другой фреймворк - Espresso.
И да, я не совсем понимаю что значит что юнит тесты могут запускаться на jvm. А раньше они не могли?
Re: Юнит тесты в Android Studio
Добавлено: 10 мар 2015, 20:08
Fry
Инфа по теме тестирования в Android собирается крайне тяжело, поэтому исключительно из того, что я узнал и как понимаю:) Буду только рад, если укажите на ошибки.
Фреймворк для тестирования в Андройде основан на junit 3. Позволяет делать, в частности, юнит тестирование отдельных классов, которые используют компоненты фрейворка Andrioid и функциональное тестирование. Т.к. они юзают фрейморк Andrioid, то для их исполнения нужен Dalvik, соответственно они запускаются на устройстве или эмуляторе. Espresso, который сейчас выпустился в версии 2.0 является тонкой надслойкой над тест-фреймворком Андройда.
Robolectic (основан на junit 4) запускается изначально в jvm на том компе, на котором ведется раработка, а Андройд функционал у него мокается собственными решениями (или сторонними). Поэтому, он работает гораздо быстрее и, в частности, лучше подходит для TDD (широко используется в Яндексе, например). Как я понимаю, на нем возможно только юнит-тесты, без функциональных.
Типа инновация в студии версии 1.1 в том, что теперь можно юзать юнит тесты из стандартного тестового фрейворка на уровне jvm. Вот поэтому у меня и возник вопрос о жизнеспособности Robolectic в этих условиях.
ЗЫ. А, ну и если мы делаем юнит-тесты классов, в которых не юзается Андройд, то их можно делать на чистом junit, соответственно в jvm.
Re: Юнит тесты в Android Studio
Добавлено: 11 мар 2015, 15:10
rezak90
Все зависит от того какие тесты запускаются. Если InstrumentalTest, TestCase (я могу ошибаться в названиях классов, на память не помню) то выполняются конечно в JVM. Если используется контекст приложения, UI то необходим Андроид. Лично опыта с Roboelectric не имел, но помню что рассматривал его. Но не выбрал по причине того что он "маленький". Самый большой функционал и самым проверенным является Robotium. Андроид его и использует. Espresso 2.0 я еще не смотрел, но год назад эта либа была еще сыровата, потому в коммерческих проектах не стал юзать.
Re: Юнит тесты в Android Studio
Добавлено: 11 мар 2015, 16:17
altwin
Fry писал(а):Я так понял, в связи с выходом этого
http://tools.android.com/tech-docs/unit-testing-support теперь юнит-тесты могут запускаться на jvm-машине компьютера, на котором ведется разработка.
С связи с этим, возник вопрос, стоит ли мне изучать Robolectric, который тоже запускается на jvm, или он уже потеряет смысл на фоне "официального" тест-фреймворка?
У вас есть свободное время и вы учитесь новому, пытаетесь развиваться ? - да стоит.
У вас есть есть проект за который вам платят деньги? - забудьте.
Re: Юнит тесты в Android Studio
Добавлено: 11 мар 2015, 22:52
Fry
rezak90 писал(а):Лично опыта с Roboelectric не имел, но помню что рассматривал его. Но не выбрал по причине того что он "маленький". Самый большой функционал и самым проверенным является Robotium. Андроид его и использует. Espresso 2.0 я еще не смотрел, но год назад эта либа была еще сыровата, потому в коммерческих проектах не стал юзать.
Помнится в вебинаре вы рассказывали именно об Эспрессо )
А почему Roboelectric маленький, что в нем не хватало?
altwin писал(а):
У вас есть есть проект за который вам платят деньги? - забудьте.
Вы это об Robolectric, или про тестирование вообще?

Re: Юнит тесты в Android Studio
Добавлено: 12 мар 2015, 01:45
rezak90
Fry писал(а):Помнится в вебинаре вы рассказывали именно об Эспрессо )
Espresso удобней, меньше кода. На тот момент был еще сыроват и не все плюшки поддерживал в то время как Robotium'y уже несколько лет и все шишки набиты.
Fry писал(а):А почему Roboelectric маленький, что в нем не хватало?
Если бы я помнил))) Когда поднялся вопрос что использовать, помню что Roboelectric'a не хватало.
В общем Robotium вполне устраивает во всех планах.
Re: Юнит тесты в Android Studio
Добавлено: 12 мар 2015, 08:07
altwin
Fry писал(а):
Вы это об Robolectric, или про тестирование вообще?

смотря кто платит, если вы работаете в американской компании или в европе/Сингапуре в большинстве случаев без тестов платить вам быстро перестанут.

Re: Юнит тесты в Android Studio
Добавлено: 12 мар 2015, 09:44
Fry
rezak90, понятно. Пока больше сколоняюсь к Эспрессо, хотя инфы по нему явно меньше. По Роботиуму еще и книжка есть )
altwin, помимо своих проектов, смотрю исключительно на Запад. Поэтому навыки тестирования критичны. Да и в России во многих вакансиях это требуется.
Re: Юнит тесты в Android Studio
Добавлено: 12 мар 2015, 23:25
Fry
И раз уж мы тут собрались
1. Часто можно увидеть выражение типа "проект покрыт тестами на такое-то количество процентов". Каким образом в андройде это вычисляется?
2. На вскидку, при тестировании приложений насколько часто приходится писать на чистом junit (т.е. тестируя классы, в которых нет андройда) ? На сколько вообще pure junit востребован в андройде?
Re: Юнит тесты в Android Studio
Добавлено: 12 мар 2015, 23:37
doter.ua
Fry писал(а):И раз уж мы тут собрались
1. Часто можно увидеть выражение типа "проект покрыт тестами на такое-то количество процентов". Каким образом в андройде это вычисляется?
2. На вскидку, при тестировании приложений насколько часто приходится писать на чистом junit (т.е. тестируя классы, в которых нет андройда) ? На сколько вообще pure junit востребован в андройде?
Можно 95% приложения написать на чистой яве, и вывести результат в TextView (типа 5%). Все зависит от проекта.
Re: Юнит тесты в Android Studio
Добавлено: 12 мар 2015, 23:46
rezak90
Fry писал(а):1. Часто можно увидеть выражение типа "проект покрыт тестами на такое-то количество процентов". Каким образом в андройде это вычисляется?
Вычисляется легко. Берешь любой анализатор который вычисляет процент покрытия кода тестами. Последний раз я для этого поднимал сервак Sonar. Есть более быстрые способы, но лучше сонара я пока не встречал.
Fry писал(а):2. На вскидку, при тестировании приложений насколько часто приходится писать на чистом junit (т.е. тестируя классы, в которых нет андройда) ? На сколько вообще pure junit востребован в андройде?
Я обычно пишу на чисто junit если это функциональные тесты. Потому что использование фреймворков только тормозит выполнение самих тестов.
Re: Юнит тесты в Android Studio
Добавлено: 13 мар 2015, 10:56
Fry
rezak90 писал(а):
Я обычно пишу на чисто junit если это функциональные тесты. Потому что использование фреймворков только тормозит выполнение самих тестов.
А как можно написать на чистом junit функциональный тест? Как, не используя фреймворк, найти кнопку на активити и понажимать ее, например?