Получение списка тестов проекта

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

Мой репетитор и я разработали первые шаги для проекта, первым из которых была тестовая инвентаризация: это так же просто, как получить список тестов проекта. Например, предположим, что у меня есть веб-приложение, бэкенд на 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», было бы достаточно, чтобы найти скрипт.