The statements and opinions expressed here are my own and do not necessarily represent those of Oracle Corporation.
Всё нижеописанное - выдумка автора и противоречит здравому смыслу и взглядам компаний всего мира.
Вообще, JTHarness – этотакое говно мамонта теперь OpenSource-проект со страничкой на java.net, однако там почему-то нет последних известий о переводе его на mercurial-репозиторий, а вот, например, в здешних обновлениях – есть. На всякий случай – ссылки на репозиторий и страницу, с которой можно скачать все версии данного продукта, а то они, конечно, гуглятся, но внутри данных проектов расположены как-то неочевидно.
Из софта нам понадобится JDK, JT Harness и Java ME SDK (на момент 09.2014 реализована только на платформе MS Windows). Выкачиваем, устанавливаем, пляшем.
Я возьму себе версию JTHarness 4.4.1, чтобы не натыкаться на свежие баги. Распаковываем этот архив куда-нибудь и изучаем золотые слова из мануала:
Распаковалось. Хорошо. Можно посмотреть на примеры в папке Examples, содержащей внутри себя Entrylevel-туфту, а можно пилить и собственный TestSuite. Для написания своего набора тестов придётся проделать следующие процедуры:
Типа, у нас тут всё по дефолту.
jar -xvf ..\lib\javatest.jar com\sun\javatest\Test.class
com\sun\javatest\Status.class
Но я ленив, и просто пропишу в дальнейшем в classpath теста путь до целой библиотеки.
Тут нужно обратить внимание на закомментированную секцию перед объявлением класса. В ней указаны инструкции для JT Harness, чтобы он распознал тест из исходника. А вот и таблица из оригинального мануала, которую мне лень переводить:
Почти всё. Мы, в принципе, готовы к компиляции и запуску, однако встаёт один вопрос -- как организовать работу со всем этим хозяйством. Можно положить сорцы в каталог tests и компилировать/перекладывать руками, а можно и какой-нибудь системой автоматической сборки воспользоваться. Я решил угореть по Maven. Собственно, каноничная структура проекта такова:
У меня же, получается, будет отдельный Maven-проект со своими зависимостями, который при вызове mvn prepare-package будет по кусочкам собирать TestSuite в каталоге target. Залил эту фигню на Гитхаб, где и буду далее над ней издеваться. На текущий момент - вот, что представляет собой вышеописанное:
https://github.com/savermyas/JTHarnessSimpleTest/releases/tag/v1.0
Интересного там пока не очень много:
- Скрипт, выкачивающий архивы JTHarness и инсталлирующий их в локальный Maven-репозиторий (в сетевых-то репах этого добра нет, хехехе) - install_dependency.sh
- Описание проекта pom.xml. Всего пара интересных мест - это сборка проекта в каталоге target:
и запуск JavaTest с необходимыми параметрами:
После того, как откроется основное окно JTHarness, необходимо настроить запуск теста, указав путь до бинарника Java. Это делается следующим образом: Configure -> Edit configuration -> Java Virtual Machine. Ну, а потом можно кликать по кнопке запуска тестов, наслаждаясь случайным результатом.
Понятно, что представленный пример тривиален, и из него совершенно невозможно выжать то, для чего нужен этот JTHarness. А нужен он для распределённого запуска тестов, снятия результатов тестирования с удалённых устройств, сбора информации в одном месте, генерации отчётов и прочих штуковин, которые будут рассмотрены в будущем.
Всё нижеописанное - выдумка автора и противоречит здравому смыслу и взглядам компаний всего мира.
Что? Зачем?
Java ME тут тестирую волею судеб, саму платформу то есть. Тестирование происходит путём написания приложения, работающего на поддерживаемой платформе. А как протестировать приложение или библиотеку, которая крутится где-то на удалённой железке? Нужно же и разместить его там, и запустить, и результаты выполнения получить. Для таких дел пацаны и запилили ME Framework, а на его основе – JT Harness. Ща понапишем чего-нибудь, используя эти штуковины.Вообще, JTHarness – это
Разработаем первый тест
С чего начать, кроме как с примитивщины? Ни с чего, лежать на диване и качать ногой. Но мы вместо этого зароемся в мануалы и напишем бесполезный локальный тестик, в дальнейшем раскочегарив его до масштаба вселенной при помощи понемногу развивающегося умища.Соберём всё в кучу
Для начала ознакомимся с документиком по диагонали. А для верности высосем его себе. Помимо него есть мануал посвежей. Также на всякий случай сохранённый.Из софта нам понадобится JDK, JT Harness и Java ME SDK (на момент 09.2014 реализована только на платформе MS Windows). Выкачиваем, устанавливаем, пляшем.
Я возьму себе версию JTHarness 4.4.1, чтобы не натыкаться на свежие баги. Распаковываем этот архив куда-нибудь и изучаем золотые слова из мануала:
Процесс выполнения набора тестов. |
- Создать директорию, где мы будем копить тесты, их исходники, описания и прочую шелупонь;
- Создать описание набора тестов;
- Подготовить библиотеки для запуска JTHarness и удовлетворения всяческих зависимостей;
- Подготовить директорию classes;
- Написать тест(ы);
- Скомпилировать;
- Запустить и посмотреть, как оно там.
Этим и займёмся.
Подготовка директории для набора тестов
Тут всё очень просто – создаём директорию с названием нашего TestSuite, а в ней – поддиректории:
- tests, для складирования исходных кодов наших тестов, они понадобятся для того, чтобы круто выглядеть в отчётах, демонстрируя, что же именно у нас попадало;
- lib, для всяких зависимостей, а также основной библиотеки javatest.jar;
- classes, для скомпилированных классов-тестов, потому что глупенький JTHarness будет собирать из них пакеты для пересылки на тестируемую платформу, а ещё туда придётся вытащить классы-зависимости из библиотек, расположенных в директории lib.
На этом пока всё. Нормальные пацаны ещё частенько src и doc создают, но нам этого пока не нужно.
Создание описания набора тестов
Это файл с именем testsuite.jtt, содержащий в себе описание теста, точнее имена соответствующих используемых классов. Думаю, написание таких классов оставим на будущее, а пока, согласно рекомендациям в документе, наполним файл следующим содержимым:
# Test Suite properties file for DemoTCK test suite
# with tag-style tests
name=My Test Suite
id=1.0
finder=com.sun.javatest.finder.TagTestFinder
script=com.sun.javatest.lib.StdTestScript
interview=com.sun.javatest.interview.SimpleInterviewParameters
Создание описания набора тестов
Это файл с именем testsuite.jtt, содержащий в себе описание теста, точнее имена соответствующих используемых классов. Думаю, написание таких классов оставим на будущее, а пока, согласно рекомендациям в документе, наполним файл следующим содержимым:
# Test Suite properties file for DemoTCK test suite
# with tag-style tests
name=My Test Suite
id=1.0
finder=com.sun.javatest.finder.TagTestFinder
script=com.sun.javatest.lib.StdTestScript
interview=com.sun.javatest.interview.SimpleInterviewParameters
Собираем JAR-файлы
В каталог lib необходимо положить javatest.jar и jh.jar из скачанного дистрибутива JT Harness. Это сейчас, в примитивном тесте. А вообще, туда придётся складывать все библиотеки, использованные при написании тестов.Подготавливаем директорию classes
Вообще, в мануале предлагают экспортировать туда используемые class-файлы из библиотеки javatest.jar вот такой командой:jar -xvf ..\lib\javatest.jar com\sun\javatest\Test.class
com\sun\javatest\Status.class
Но я ленив, и просто пропишу в дальнейшем в classpath теста путь до целой библиотеки.
Пишем сам тест
Исходники теста необходимо положить в каталог tests (или там же прямо их и писать). Откомпилированный результат - в каталоге classes. В качестве примера я засвинячил коварный тест, который псевдослучайным образом то, хрипя, заваливается набок, то успешно проходит. Подлый исходник прилагаю картинкой:Исходник теста |
Расшифровка параметров |
Золотые слова |
https://github.com/savermyas/JTHarnessSimpleTest/releases/tag/v1.0
Интересного там пока не очень много:
- Скрипт, выкачивающий архивы JTHarness и инсталлирующий их в локальный Maven-репозиторий (в сетевых-то репах этого добра нет, хехехе) - install_dependency.sh
- Описание проекта pom.xml. Всего пара интересных мест - это сборка проекта в каталоге target:
и запуск JavaTest с необходимыми параметрами:
После того, как откроется основное окно JTHarness, необходимо настроить запуск теста, указав путь до бинарника Java. Это делается следующим образом: Configure -> Edit configuration -> Java Virtual Machine. Ну, а потом можно кликать по кнопке запуска тестов, наслаждаясь случайным результатом.
Понятно, что представленный пример тривиален, и из него совершенно невозможно выжать то, для чего нужен этот JTHarness. А нужен он для распределённого запуска тестов, снятия результатов тестирования с удалённых устройств, сбора информации в одном месте, генерации отчётов и прочих штуковин, которые будут рассмотрены в будущем.