Запуск одиночного теста в тестовом наборе в Eclipse

Мне всегда нравилось запускать только один тест в тестовом классе. Теперь я использую тестовые наборы, чтобы упорядочить свои тесты по тестируемым методам в отдельные классы. Однако Eclipse не запускает метод @ BeforeClass, если я хочу запустить один тест набора тестов.

У меня следующая тестовая установка:

@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class })
public class TestSuite {

  @BeforeClass
  public static void setup (){
  // essential stuff for Test1#someTest
  }

  public static class Test1{
    @Test
    public void someTest(){}
    }
}

Когда я запускаю someTest, он не работает, потому что TestSuite # setup не запускается. Есть ли способ исправить это?


person Torsten    schedule 23.02.2014    source источник


Ответы (1)


Если вы просто выполняете Test1, JUnit не знает о TestSuite, поэтому @BeforeClass не обрабатывается. Вы можете добавить @BeforeClass в Test1, который вызывает TestSuite.setup (). Это также потребует добавления статического флага в TestSuite, чтобы он выполнялся только один раз.

@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class })
public class TestSuite {
    private static boolean initialized;
    @BeforeClass
    public static void setup (){
        if(initialized)
            return;
        initialized = true;
        System.out.println("setup");
        // essential stuff for Test1#someTest
    }

    public static class Test1{
    @BeforeClass
        public static void setup (){
            TestSuite.setup();
       }
        @Test
        public void someTest(){
            System.out.println("someTest");
        }
    }
}
person Ted Bigham    schedule 23.02.2014
comment
Какой облом, я надеялся, что есть какая-то магия Затмения, которая позаботится об этом! - person Torsten; 23.02.2014
comment
Я знаю, что это старый пост ... но, пытаясь заставить его работать, кажется, что чего-то не хватает. Я добавил метод настройки в комплект, а затем в тестовый класс, но он не работает, я получаю NullPointerExceptions. Я вижу, что в вашем примере у вас есть классы тестов, вложенные в TestSuite, чего у меня нет, у меня есть разные файлы, но с вызовом метода TestSuite.setup (). - person Fede E.; 14.11.2018