Как да направите TDD в Android? Част 2 - Проектиране на архитектура, настройка и тестване на единици

Този урок ще премине през архитектурата на проекта, настройка от нулата и накрая ще напишем някои тестове на Unit.

В Защо разработчиците се плашат от кода на рефактора и част 1 от тази серия разгледахме какво е значението на теста за автоматизация, какво е тестване на пирамида, какъв тип тест, какви инструменти могат да се използват за извършване на TDD в android и къде са тестовите папки разположен.

Архитектура на проекта

В съответствие с тестовете за автоматизация, ние трябва да следваме някакъв вид архитектурен модел, който ще ни помогне да тестваме и структурираме нашето приложение по чист, тестван начин.

Има много модели на архитектура, които лесно поддържат TDD Model – View – Presenter (MVP), Model – View – Viewmodel (MVVM).

Ние избираме MVP за нашата поредица от уроци.

  1. Моделът обикновено е POJO, които се използват от Presenter и View за предаване на информация или за действие.
  2. Изглед (активност или фрагмент) е пасивен интерфейс, който показва данни. Това е мястото, където задаваме данни и правим промени, свързани с потребителския интерфейс, като скриване, преместване на изглед.
  3. Презентаторът решава логиката на представяне, нашата бизнес логика се намира тук. Той разговаря с хранилището получава данни, форматира го за показване в изглед. Той решава какво трябва да се показва в View. Опитайте се да избягвате максимално използването на специфичен за Android код в презентатора (знам, че понякога е по-трудно ).

Настройка на проекта

В тази публикация ще създаваме просто приложение за Android от нулата. Приложението, което ще създаваме, е просто приложение, което влиза и взима участие в студентите.

  1. Отворете Android Studio, изберете „Стартиране на нов Android проект“
  2. Въведете име на приложението е „StudentAttendance“, домейн на компанията „nilesh.tdd.com“. Щракнете върху Напред

3. Изберете версията за Android, която искате поддръжка и щракнете върху „Напред“

4. Изберете „Празна активност“ и щракнете върху „Напред“

5. Въведете име на активността и щракнете върху „Край“

6. Окончателната структура на проекта ще изглежда под изображението

Тестване на единица

След известно рефакториране на структурата на пакета, поръчка за проверка (81d1668667bcb5eacf4cf94a8dffe738ad206d67)

Използвайте команди по-долу

git clone https://github.com/NileshJarad/TDD_Demo.git
git checkout 81d1668667bcb5eacf4cf94a8dffe738ad206d67

Ако някой попадне под грешка след касата

След това променете версия на build.gradle на 2.1.2 в проекта build.gradle

Така че най-накрая сме тук, за да си изцапаме ръцете при кодирането .

Сега ще напишем първия си тестов случай, за да проверим „Ако потребителят се опита да влезе след три опита, ще му покажем съобщение за грешка“

Отидете на клас com.tdd.nilesh.studentattendance.login.LoginPresenter. Курсорът върху името на класа и натиснете SHIFT + CTRL + T (за mac SHIFT + CMD + T), това ще изскочи прозорец с опция Create New Test.
Той автоматично ще избере името на класа за Test и ще добави Test в края на името на класа в нашия случай LoginPresenterTest.
Щракнете върху OK. Той отново ще се появи на прозореца, за който тествате папката. Докато пишем JUnit select ../app/src/test/…, той ще създаде тестов клас със същата структура на пакета.

Публикувам моментна снимка на кода, тъй като искам да напишете код.
Сега ще напишем Test като в снимката по-долу.

@Test анотация показва, че е тест. Тъй като incrementLoginAttempt & isLoginAttemptExceeded са посочени с червен цвят. Трябва да създадем метод в LoginPresenter. Натиснете ALT + ENTER, за да създадете методи в клас на презентатори, както се показва по-долу.

Ние сме написали неуспешен тест. Постепенно ще напишем нейното изпълнение за него. За да стартирате тест, натиснете малко зелено изображение за игра, останало от името на теста.

Както писахме, ако не успеем, изходът от теста трябва да бъде както следва.
Очакваме 1 като изход, но получаваме 0.

Сега ще напишем преминаващо изпълнение на теста за тест. По-долу е изпълнението за преминаване на тест.

Отново пуснете тест, той трябва да е преминаващ .

Използвайте командата за проверка по-долу за Repo до сега.

git checkout 302962ea6f63aa3afba003efa043ebacbaf02345

Сега трябва да напишете своя checkIfLoginAttemptIsNotExceeded тест и да проверите дали внедряването ви е правилно. Ако не сте, не се притеснявайте, че ще бъде в следващия ангажимент.

Сега искаме да проверим „Потребителско име и парола е правилна“

Така че ще напишем тест и по-долу е как изглежда (Failing test )

Отново повторете процеса за ALT + ENTER и стартирайте тест. Тъй като е неуспешен тест, той ще покаже червен сигнал за неуспех.

Сега ще напишем нейното изпълнение както по-долу.

Изпълнете тест отново, той ще премине сега.

Сега опитайте за тест на checkUsernameAndPasswordIsInCorrect.

Използвайте командата за проверка по-долу за Repo до сега.

git checkout 4771fbfb8c6cbda98d9f01ac5e035ea02f0f5da6

Междувременно бих искал да чуя предложения и коментари за това.

Наздраве !!!.

Нежно натиснете ♥ ️ отдолу.

Поръчка Следваща публикация: