TDD из андроид приложений


0

мне нужны некоторые советы и рекомендации, связанные с TDD Андроида приложений

Я занимаюсь разработкой сложного приложения Android (автоматический робо-плеер для веб-игры). Теперь у меня есть пилот для этого, и прежде, чем начать, продолжите его разработку, я хочу сделать полный TDD для этого.

Основная цель этого приложения запускается как фоновый сервис, который обменивается данными с сервером HTTP - он будет посылать запросы HTTP с содержанием JSon

Он должен 2 режима бега:

- service mode - it will run in background- read some data configuration from database and communicate with the server 
- GUI mode - communication with server on demand + configuration for running in service mode. 

Уровень GUI разработан как MVP, поэтому весь бизнес, выполняемый в модуле (блок MVP), отделен от представления, поэтому вся логика приложения «не зависит от андроида».

У меня есть несколько больших слоев, что мне нужно сделать тесты для:

- domain data access : 
     database storage (ormlite) 
     android specific storage - shared prefs.., 
     files 
- server communication - http client (spring android rest template) 
         http content conversion (gson) 

- background services - android services 
- GUI - activities 
- app business - android independent - algorithms, computations, ... 

В заключении будет нужно TDD - для каждого из этих слоев в отдельности, но и интеграционные тесты для полного потока.

тесты включали:

- database DAO tests 
    - http client requests 
    - GSON conversion TDDs 
    - business logic - simple tests for methods 
    - unit testsfor running and scheduled background services 
    - activity unit testing 
    - test suites (service + DAO + json conversion + http requests) 

Мой первый вопрос, что рамки TDD будет лучше для моих потребностей? Должен ли я использовать насмешку или нет?

Пожалуйста, дайте мне несколько советов. Спасибо

2

Сначала для автоматического тестирования: junit.


Для плавных утверждений, вы можете взглянуть на fest-assertions. Они содержат множество примеров, here. Но наслаждаться этим на String:

assertThat("Frodo").startsWith("Fro").endsWith("do").hasSize(5); 

Это не только гармоничным, это увеличит и ваша производительность.


Так как вы хотите, чтобы писать тесты, вам придется писать mock объекты. Конечно, вы можете сделать это без рамки, но это оченьtedious.

Personnaly, я большой поклонник Mockito. Это api отлично и очень свободно. Кроме того, вы можете использовать статические методы BDDMockito для записи теста в порядке BDD. Смотри:

//given 
given(seller.askForBread()).willReturn(new Bread()); 
//when 
Goods goods = shop.buyBread(); 
//then 
assertThat(goods, containBread()); 

Иногда вы будете зависеть от класса, который вы не можете издеваться, например final class как BluetoothAdapter. В этих случаях (и только в них) вы можете использовать PowerMock.

Посмотрите также на этот материал:

Существует также книга: Android Application Testing Guide


0

Поскольку вы упомянули об интеграционных тестах, вас также может заинтересовать RoboGherk как автоматическая платформа для тестирования приемопередатчиков для Android, которая была недавно announced by my friend at LeanDog.