Тестване на добавки за Apache Cordova

Ще говоря за една от темите, свързани с Apache Cordova, която практически не е покрита в Runet - как да тествате вашия плъгин за Apache Cordova.

Малко теория

И така, как е тестването на плъгини за Apache Cordova. На първо място, тестовата архитектура се състои от две части:

  1. Всъщност тестовете, използващи тази или онази библиотека за тестване.
  2. Така нареченият тестов пакет или част от кода, отговорен за провеждането на тестове и генерирането на резултати от тестове.

Ако всичко е ясно и разбираемо с тестовия код, тогава, за да ги стартирате, трябва да направите допълнителни манипулации.

Най-лесният начин тук е да използвате cordova-plugin-test-framework - друг плъгин, който добавя интерфейс към приложението за стартиране на тестове под формата на отделна страница с контроли за стартиране, спиране и избор на тестове за изпълнение, както и зареждане на всички декларирани тестове, докато приложението работи и ги изпълнява.

Ето как изглежда в действие:

apache
тестване

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

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

да се изпълни при зареждане на модула. Името на функциите говори само за себе си.

  1. Също така е полезно да добавите cordova-plugin-test-framework - и евентуално плъгина, който тествате - като зависимост за вашите тестове, така че тесе инсталира автоматично заедно с тестовете. Това става чрез добавяне на следните елементи към tests/plugin.xml:

Създаване на Plugin Framework

И така, след като всичко е подготвено за писане, рамката на плъгина трябва да изглежда по следния начин:

apache

plugin.xml ще изглежда така:

Това може да се направи ръчно във вашия $EDITOR или можете да използвате plugman, друг инструмент за работа с плъгини на Apache Cordova:

за генериране на рамката на приставката и ръчно редактиране на файловете.

Писане на автоматизирани тестове

Сега да преминем към писане на тестове. Тези, които вече са запознати с BDD и жасмин, могат да пропуснат този раздел. тук няма да има нищо ново и преминете към следващия.

Примерите по-късно в тази статия са базирани на прост плъгин, написан за 10 минути за демонстрационни цели. Кодът на приставката може да бъде намерен на GitHub.

И така, първо създаваме рамката на тестовия плъгин, както е описано в предишния раздел, и започваме да я пълним с тестове.

За сега това е достатъчно. Сега нека създадем тестово приложение и да изпълним нашите тестове. За да направите това, изпълнете следните команди в папката с тествания плъгин:

и редактирайте елемента във файла config.xml в нашето тестово приложение - променете стойността на cdvtests/index.html. Това е необходимо, така че вместо главната начална страница, когато приложението стартира, да се отвори страницата на плъгина и да се зареди тестова рамка.

Сега нека стартираме приложението:

и вижте страницата на приставката. Натискаме "Автотестове" и почти веднага виждаме жасмин отчет за успешното завършване на тестовете.

тестване

Добавяне на ръчни тестове

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

При ръчните тестове нещата работят малко по-различно. test-framework предполага, че всеки тест трябва да има отделен бутон в интерфейса и поле, общо за всички тестове, в което можете да показвате резултатите си. Това са параметрите createActionButton и съдържание съответно за функцията defineManualTests.

createActionButton е функция, която създава бутон, добавя го към DOM в посочения елемент и изпълнява определената функция, когато бутонът бъде щракнат. Параметрите на функцията изглеждат така:

content е контейнер на страницата, в който можете да поставите информация за теста и да опишете процеса на проверка за тестера.

Например, нека добавим един ръчен тест:

Сега трябва да възстановим приложението с актуализирания плъгин. За да направите това, просто премахнете приставката от приложението и опитайте да стартирате приложението.

Командата за изпълнение преди изграждането на приложението ще възстанови премахнатия плъгин от първоначалното му местоположение заедно с актуализираните файлове и всички промени ще бъдат включени в приложението.

Изпълнете тестове на CI

Повторното изграждане на приложението, за да стартирате отново тестовете, е доста рутинна задача, която, разбира се, искате да направите автоматично. Вместо да преоткриваме собственото си колело, нека използваме готово решение - cordova-paramedic. Това приложение е написано специално за автоматизиране на стартирането на тестове за плъгини, вкл. и за CI. Ето какво прави:

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

За да започнете да използвате paramedic, нека го инсталираме и добавим към нашия плъгин package.json:

и добавете няколко команди за изпълнение на тестове за iOS и Android.

Всичко. Сега, вместо да изграждаме приложението ръчно, да редактираме неговия config.xml, да го стартираме и след това да гледаме как се появяват точките и кръстчетата на преминалите и неуспешните тестове, ние просто стартираме подходящия скрипт, например за Android:

И след известно време получаваме резултатите от теста на конзолата:

Сега става много лесно да се изпълняват тестове на CI машина. Да вземем за пример Travis CI и Circle CI:

След това отиваме в контролния панел на съответната услуга, активираме интеграция с GitHub и се наслаждаваме на:

apache

Заключение

И така, сега имаме плъгин, покрит с автоматични тестове, можем да създадем и стартираме тестово приложение само в един или два реда в терминала и знаем състоянието на кода, който се актуализира за всеки ангажимент.