Как динамически указать пакет для @RunWith с JUnit4 - PullRequest
0 голосов
/ 26 декабря 2018

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

+---main
+---test
     +---java
         +---com
             +---company
                +---app
                ¦   +---app1
                ¦   ¦   +---common
                ¦   ¦   +---page
                ¦   ¦   +---test
                ¦   +---app2
                ¦       +---common
                ¦       +---page
                ¦       +---test
                +---core
                    +---categories

Фреймворк использует модель PageObject, поэтому page будет содержать детали каждой страницы, common будет дляфункций, общих для всего приложения, и test содержит фактические тесты с именем *Test.class

. В настоящее время бегун находится в том же пакете, что и тесты каждого приложения.Но каждый из них представляет собой точно такой же код, за исключением переменной, содержащей путь к пакету, и @SuiteClasses (), перечисляющей каждый тестовый класс.

@RunWith(Suite.class)
@Suite.SuiteClasses({
        FirstTest.class,
        SecondTest.class,
        ThirdTest.class,
        _CleanUpTest.class})
public class _CategoriesCount {
    private static final String MAIN_TEST_PACKAGES = "com.company.app.app1.test";
    private static final String MAIN_CATEGORY_PATH = "com.company.core.categories.";
    ...
}

Я надеюсь создать внутри себя один бегунпакет core на основе либо командной строки, либо переменной в pom.xml, чтобы указать папку пакета приложения, и бегун автоматически конфигурирует себя.Это будет иметь несколько преимуществ:

  • Динамически читать в файлах * Test.class, поэтому, если создается новый набор тестов, тестировщик не должен забывать добавить его в бегун.файл
  • Есть только один бегун;только одно место для исправления / улучшения вместо десятков

К сожалению, все, что я видел, требует, чтобы аннотации были статичными.Я полагаю, что это происходит из-за времени, когда бегун читается перед выполнением кода.Итак, я вижу, есть ли какой-то способ, которым я не нахожу, чтобы добавить -DtestApp=app2 в командную строку, и это, в свою очередь, может заполнить раннер.Я уже использую плагин surefire для установки других переменных в коде, поэтому надеюсь, что смогу сделать то же самое с аннотациями.

...