Запуск тестовой категории JUnit из банки - PullRequest
0 голосов
/ 08 мая 2019

Эта проблема не только в запуске jar-файла, содержащего тесты, но и в запуске теста category внутри jar-файла.

У нас есть категория теста, которая выглядит примерно так:

package com.company.test.suites;

import org.junit.experimental.categories.Categories;
import org.junit.experimental.categories.Categories.IncludeCategory;
import org.junit.runner.RunWith;
import org.junit.runners.Suite.SuiteClasses;

import com.company.test.BasicSeleniumTests;

@RunWith(Categories.class)
@IncludeCategory(BasicSeleniumTests.class)
@SuiteClasses({ AllProjectTests.class })
public class RunBasicConfigurationSuite {
}

Мы можем запустить его из Gradle, мы уже делаем это примерно так:

task functionalTests(type: Test, dependsOn: [ "testClasses" ]) {
    include 'com/company/test/suites/RunBasicConfigurationSuite.*'

    // Set JVM arguments for the test JVM(s).
    jvmArgs "-Xmx3600m", "-Xms1024m"
}

Сейчас я пытаюсь создать автономную банку для инструментамы бежали из командной строки.Я создаю банку так:

task testRunner(type: Jar) {
  manifest {
    attributes "Main-Class": "com.company.selenium.runners.TestRunner"
  }
  baseName = "TestRunner"
  from {
    configurations.testCompile.collect {
      it.isDirectory() ? it : zipTree(it)
    }
  }
  from sourceSets.test.output
  exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
  with jar
}

Созданная баночка выглядит хорошо, я могу пойти:

java -jar ../test-module/build/libs/TestRunner-4.1.0.0-SNAPSHOT.jar

и баночка запускается, и запускается основной класс, который выглядит так:

пакет com.company.selenium.runners;

import org.junit.runner.JUnitCore;

public class TestRunner {

    public static void main(String[] args) {
        JUnitCore.main(
                "com.company.test.suites.RunBasicConfigurationSuite");
    }
}

Однако, поскольку мы хотим запустить тестовую категориюэто не работаетСообщение об ошибке:

1) initializationError0(com.company.test.suites.RunBasicConfigurationSuite)
java.lang.Exception: Custom runner class Categories should have a public constructor with signature Categories(Class testClass)

Categories - это класс из JUnit, и да, у него нет этого конструктора.Не уверен, что мне теперь делать?Подкласс Категории и использовать это, вместо этого?

Редактировать: Это не сработало.Простое создание подклассов и реализация пустого конструктора приводит к этому:

java.lang.NoSuchMethodError: org.junit.runners.Suite.<init>(Ljava/lang/Class;Lorg/junit/runners/model/RunnerBuilder;)V

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...