Этот гайд подразумевает из себя продолжение предыдущего гайда, который можно найти по ссылке.
Тут мы рассмотрим как запускать тесты по жс так чтоб не выстрелить себе в ногу и продолжить держать изначальный проект в порядке не уродуя его хаотичными перемещениями файлов или добавлением новых Source set'ов
Мне кажется, что лучше всего понимается как запускать тесты когда ты понимаешь как они устроенны и почему. Потому тут по фасту разберем что да как, а потом уже приступим к настройке
Так как недавно в репозиторий добавили сию штуку ровно перед лабами по жс наверно стоит пояснить что это.
Собственно Graal VM это грубо говоря просто либа для запуска JS из жавы. То есть в нашем случае тесты выступают как виртуальная машина для JS.
По не очень понятной причине в репозитории появилось большое кол-во страшных .sh и .cmd файлов из чего можно наверно было бы сделать вывод что с приходом JS все поменялось, но нет, мы все еще тестируем все в жаве процессах и в тестах даже остался во многом старый код.
Алгоритм работы тестов:
- Запуск жава класса
- Запуск Graal VM
- Чтение вашего JS файла и засовывание его в Graal VM
- После этого работа тестов с вашим JS кодом будет очень похода на работу с мапой в которой ключ это имя, а значение это функция или переменная или типа того.
Из этого следует замечательный факт, что нам нужно будет запустить жава процесс. А если есть жава процесс, который использует Graal VM то получается нужно как-то сунуть в этот самый жава процесс библиотеку.
Вот собственно примерно этим и занимаются те .sh скрипты в репозитории. Но запуская скриптами мы создаем грязь в нашем проекте и лишаемся возможности использовать дебаггер.
Ну и вот тут переходим к настройке.
Так как я считаю, что вы использовали гайд доступный по вот этой ссылке у вас в проекте должна быть структура по типу после того как вы спуллите репозиторий.
paradigms-2022/
├── artifacts
├── java
├── javascript
└── solution
└── java-solutions
Первое, что нужно сделать это создать папку javascript-solutions
в папке solution
. Именно в этой папке мы будем делать создавать свои решения.
Далее нам нужно отметить папку paradigms-2022/javascript
как Source set потому что там жава классы, которые как раз занимаются тестированием жс.
Далее нам надо добавить папку
paradigms-2022/javascript/graal
как папку с библиотеками
Теперь нас будет интересовать папка javascript/jstest/functional
в ней собраны тесты для для первой лабы по жс.
Допустим первое, что мы хотим сделать это потетстить как мы реализовали первый пункт дз.
- Пишем решение в
solution/javascript-solutions/functionalExpression.js
- Переходим в файл
javascript/jstest/functional/FunctionalTest.java
- Тыкаем
Далее в Program arguments
прописываем всякие там hard base
, сохраняем и запускаем.
Когда я сделал всё по инструкции, сборщик орал, что не видит base. Если у вас такая же ошибка, пихните base в javascript и всё заработает. А Юре безграничное спасибо.