Методы параметров JUnit для всех тестов, запускаемых первыми в наборе, а не перед каждым тестом

Основная проблема заключается в том, что когда я группирую тесты JUnit в наборы или наборы наборов, метод @Parameters всех тестов запускается первым, прежде чем будут выполнены отдельные наборы или тесты. Наша установка выглядит следующим образом:

У нас есть несколько файлов тестовых классов, каждый из которых имеет статические внутренние классы с фактическими тестами.

@RunWith(Suite.class)
@SuiteClasses({
   SubTestSuite01.TestSet01.class,
   SubTestSuite01.TestSet02.class})
public class SubTestSuite01 {
  public static class TestSet01{
    public TestSet01(){}
    @Parameters public static Collection<Object[]> data(){}
    @Test public void test01(){}
    @Test public void test02(){}
  }

  public static class TestSet02{
    public TestSet02(){}
    @Parameters public static Collection<Object[]> data(){}
    @Test public void test01(){}
    @Test public void test02(){}
  }
} 

И так далее для SubTestSuite02, SubTestSuite03 и т. Д. Теперь, чтобы собрать все эти наборы тестов в большую коллекцию, я создал более крупный набор тестов, как показано ниже:

@RunWith(Suite.class)
@SuiteClasses({SubTestSuite01.class, SubTestSuite02.class,SubTestSuite03.class})
public class AllTests{}

Однако независимо от того, использую ли я главный набор AllTests или SubTestSuite, метод @Parameters всех внутренних классов вызывается первым во всем наборе / наборах перед любыми @BeforeClass методами или фактическими методами тестирования.

Мои вопросы:

  1. Это ожидаемое поведение?

  2. Как я могу заставить его работать так, чтобы метод @Parameters отдельных внутренних классов выполнялся непосредственно перед выполнением собственных тестов, а не вместе в начале набора?

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


person anishthecoder    schedule 30.11.2013    source источник
comment
Эта установка очень необычна. Я бы посоветовал более обычную настройку и посмотреть, как там все будет. Что касается метода Parameters, запущенного до BeforeClass, в этом случае я думаю, что это будет то поведение, которого я ожидал.   -  person Nikola Yovchev    schedule 30.11.2013
comment
@baba Не могли бы вы пояснить, что вы имеете в виду под более нормальной настройкой ...? или почему такая установка необычна ...?   -  person anishthecoder    schedule 30.11.2013
comment
Кто-нибудь....? какие-то дополнительные подсказки ...?   -  person anishthecoder    schedule 01.12.2013


Ответы (1)


@Parameterized всегда будет запускаться первым, даже до @BeforeClass

Вам не обязательно использовать статические классы и внутренние классы для ваших тестов, я бы использовал классы для проведения подобных тестов и @ Cetegories, чтобы выбрать группы.

person Ittiel    schedule 30.11.2013
comment
Правда, статические внутренние классы использовать не нужно. Однако моя проблема в том, что, как бы я ни организовывал тесты и наборы, ВСЕ @Parameterized будут запускаться первыми во всем наборе / наборах. Мне действительно нужен способ запускать его для одного тестового класса за раз .... - person anishthecoder; 01.12.2013