Управление зависимостями в JAR - Автоматизация тестирования - PullRequest
0 голосов
/ 27 декабря 2018

Я не уверен, что это лучшее место для размещения такого вопроса, но вот он.Я - инженер по автоматизации тестирования, работающий в основном с приложениями командной строки с весенней загрузкой.Мои тесты на высоком уровне предназначены для того, чтобы гарантировать, что любой тип данных, которые выбрасываются в приложение, будет обрабатываться правильно.Мы магазин Java.

Как и в случае любой "хорошей" практики тестирования, я отношусь к приложению как к черному ящику, в котором я не использую объекты модели для запуска своих тестов.Я просто предоставляю приложению данные, выполняю скрипт типа командной строки (run.sh), который берет мои данные и обрабатывает их.Мои тесты состоят в основном из JDBC (для взаимодействия с базой данных) и множества утилит ArrayList, которые я собрал, чтобы отсортировать наборы результатов и получить конкретную информацию о БД.

До сих пор я развертывал свои тесты как JAR.Я собираю все вместе и внедряю в среду с помощью скрипта, который будет выполнять тесты.Тесты не запускаются при запуске приложения.Хотя они живут внутри проекта, они представляют собой отдельную сущность с отдельными классами запуска.Тем не менее, я считаю, что управление зависимостями в JAR является настоящей головной болью.Есть ли лучший способ развертывания тестов автоматизации / интеграции для приложений командной строки?

Я использую плагин maven shade для объединения всех моих зависимостей в «God JAR», но это не помогает мнерешить проблемы, возникающие при попытке выполнить JAR.Я получаю несколько ошибок при создании экземпляров компонентов, связанных с самим приложением, а не с моими тестами.По этой причине я использую модель приложения и само приложение в качестве зависимостей.Когда я запускал тесты в моем первоначальном тестировании, они работали просто отлично.Развернули в среду и они продолжили работать правильно.Перенесемся через пару месяцев, несколько изменений были внесены в приложение, и теперь, когда я создаю новый JAR, это кошмар для зависимостей.

TLDR: У меня проблемы с управлением зависимостями в проекте maven, JAR-тестах интеграции.Есть ли лучший способ развернуть тесты автоматизации / интеграции для приложений командной строки, где управление зависимостями проще?

(Примечание: я относительно новичок в этом мире, поэтому извините, если вопрос кажется немного расплывчатым),

1 Ответ

0 голосов
/ 28 декабря 2018

Я думаю, что ошибка происходит, когда вы используете плагин shade для повторной упаковки подпружиненного загрузочного фляги.Пружинная загрузка работает так, чтобы добавлять зависимости в jar как jar и настраивать собственный загрузчик классов (в мета-конфигурации), который способен читать классы из jar-файлов внутри jar-файла.Стандартный загрузчик java-классов этого не делает - возможно, поэтому плагин shade пропускает некоторые jar-файлы (вероятно, встроенные в весенний загрузочный uber jar).

Я бы попытался создать test-версию.весеннего загрузочного приложения, которое содержит тестовые классы в области компиляции и зависимость от исходного весеннего загрузочного jar (вам не нужен uber jar - поэтому вам, возможно, придется добавить классификатор коригинальная (app) конфигурация весеннего загрузочного плагина, чтобы этот jar-файл оставался доступным, поскольку он заменен по умолчанию) и используйте весенний загрузочный плагин , чтобы упаковать его тестовую версию (используя зависимость и ее классификатор, который вы использовали ранее)для оригинального приложения).

...