Junit SuiteClasses со статическим списком классов

SuiteClasses будет отлично работать со списком классов, таких как{Test1.class,Test2.class}, но когда я пытаюсь создать статический список классов, он говорит о несовместимых типах: требуетсяjava.lang.Class<?> но нашелjava.lang.Class<?>[]

Что мне не хватает?

@RunWith(Suite.class)

@Suite.SuiteClasses(TestSuite.classes)
public class TestSuite {

    public static Class<?> [] classes;

    static {
       classes = new Class<?> [1];
       classes[0] = MyTest.class;
    }
}
 AlbertoPL01 июл. 2009 г., 19:17
У вас есть пробел между & lt;? & Gt; а []? Если так, удалите это место.
 amischiefr01 июл. 2009 г., 20:14
Пространство ничего не означает, это тот факт, что он пытается разместить массив там, где он не принадлежит (даже если имена классов перечислены на практике как {M1.class, M2.class}).

Ответы на вопрос(2)

@SuiteClasses является аннотацией класса, определенной в JUnit 4.4 в org.junit.runners.Suite.SuiteClasses. Это позволяет вам определить класс набора, как описано в предыдущем вопросе.

Кстати, документ API JUnit 4.4 содержит существенную опечатку для класса org.junit.runners.Suite (Suite.html).

Использование Suite в качестве раннера позволяет вручную создавать набор, содержащий тесты из многих классов. Это эквивалент JUnit 4 статического теста JUnit 3.8.x.suite() метод. Чтобы использовать это, аннотируйте класс с@RunWith(Suite.class) а также@SuiteClasses(TestClass1.class, ...), Когда вы запустите этот класс, он запустит все тесты во всех классах набора.

@SuiteClasses(TestClass1.class, ...) следует изменить на@Suite.SuiteClasses({TestClass1.class, ...}).

Кто-то предоставил неверную информацию о наборе тестов сборки в JUnit 4.4. Не следуйте этому:

JUnit предоставляет инструменты для определения запускаемого набора и отображения его результатов. Чтобы запустить тесты и увидеть результаты в консоли, выполните:

org.junit.runner.TextListener.run(TestClass1.class, ...);
 25 июл. 2016 г., 11:35
Ссылка указывает на страницу, на которой нет рекламы, и & # x2026;

ннотацию как константу. Даже если вы справитесь с этой проблемой, компилятор отклонит ее. Что вам нужно сделать, это:

@RunWith(Suite.class)

@Suite.SuiteClasses({MyTest.class, MyOtherTest.class})
public static class TestSuite {
}

Обратите внимание на волнистые скобки.

Я уверен, что вы пытаетесь получить динамическое построение списка классов в наборе.

Я представилзапрос чтобы они это допустили, но пока единственный способ сделать это - создать подкласс класса Suite следующим образом:

public class DynamicSuite extends Suite {

    public DynamicSuite(Class<?> setupClass) throws InitializationError {
       super(setupClass, DynamicSuiteBuilder.suite());
    }
}


@RunWith(DynamicSuite.class)
public class DynamicSuiteBuilder {
   public static Class[] suite() {
         //Generate class array here.
   }
}
 07 февр. 2017 г., 07:21
Я попробовал этот подход для реализации setUp и tearDown. Но конструктор DynamicSuite вызывается до @ beforeclass. Есть ли способ @ beforeclass может быть вызван перед конструктором.
 22 окт. 2015 г., 21:23
НаследованиеSuite очень помог мне В отличие от использования@RunWith(AllTests.class) бегун, этот подход также уважает@ClassRules самого набора, а также классов, которые он содержит.

Ваш ответ на вопрос