Получение списка тестов проекта
Как я писал во введении, я разрабатываю новую библиотеку для управления тестами, их свободного выполнения, а также получения статистики.
Мой репетитор и я разработали первые шаги для проекта, первым из которых была тестовая инвентаризация: это так же просто, как получить список тестов проекта. Например, предположим, что у меня есть веб-приложение, бэкенд на Java и внешний интерфейс на JS. У меня были бы модульные тесты бэкэнда (JUnit), модульные тесты внешнего интерфейса (Mocha) и тесты интеграции/e2e (CasperJS). Итак, что я хотел бы, так это перечислить их все, классифицируя их по типу (модуль, интеграция и т. д.) или даже с помощью пользовательских категорий (модуль внешнего интерфейса, модуль внутреннего интерфейса).
Я думал, что это было бы легко, так как каждый фреймворк знает, что выполнять и где это найти:
mvn test
mocha test
casperjs test login.js (ну, это не автоматически…)
Но нет команды, чтобы перечислить их все, нет способа получить все имена тестов… по крайней мере, простым способом. Вот что я нашел:
МЭВЕН
Каждый проект Java имеет уникальную строгую структуру папок, поэтому Maven легко находит тесты, которые мы хотим выполнить.
После этого мы можем найти список с их абсолютным путем в target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst.
Другая идея — получить эти имена из файлов .xml или .txt, сгенерированных на target/surefire-reports/.
На самом деле существует плагин под названием Maven Surefire Report Plugin, который использует эти файлы .xml для создания HTML-отчета со всей информацией (тесты пройдены, пропущены, не пройдены…).
МОККА
Этот фреймворк автоматически выполняет каждый тест, который у нас есть в определенной папке (по умолчанию ./test/*.js или .coffee). Кроме того, мы можем фильтровать имена тестов с помощью — grep, чтобы было несложно выполнить помеченные тесты; однако нет никакого способа найти или перечислить эти имена или даже их имена.
С другой стороны, довольно просто добавить команду для вашего проекта:
В package.json мы можем добавить пользовательские команды в поле «скрипты».
Например, «testlist: ls ./test/ ››tests.txt»
А затем с помощью «npm run testlist» мы бы достичь нашей цели!
Последнее решение, которое я нашел, заключалось в том, чтобы просто добавить console.log(this.title) в тесты, а затем выгрузить его в .txt, но я считаю, что это не так просто, как предыдущее.
ДРУГИЕ РАМКИ
Я также исследую многие другие фреймворки, такие как Jasmine, CasperJS, Tape, Karma, NightWatch, WebDriverIO… Но все, что я нашел, было очень примитивным.
Итак, последнее решение, с которым я столкнулся, — это маркировка test, добавление простого обозначения, такого как «#integrationTest», было бы достаточно, чтобы найти скрипт.