Подтвердить что ты не робот

Остановить тест JUnit в методе @Before без сбоев

Это мои тестовые файлы

class Mother {

    @Before
    public void setUp() {
        if (!this.getClass().isAnnotatedWith("Version20")) { // pseudo code
            /*
             * stop this test without failing!
             */
        }

        // further setup
    }
}


@Version20
class Child extends Mother {

    @Test
    public void test() {
        // run only when Version == 20
    }
}

Можно ли остановить тест в Ребенке в методе @Before Мать без сбоев или assertTrue (false)?

изменить: У меня больше версий @Version19, @Version18 и т.д. мое программное обеспечение считывает конфигурационный файл и выводит результат. Некоторые тесты применимы только для специальных версий. Я не хочу делать проверку версии внутри метода тестирования, потому что у меня много небольших тестов и не люблю дублирование кода.

4b9b3361

Ответ 1

Ранее я задавал аналогичный вопрос - результат заключался в том, что вы можете использовать методы класса Assume для отключения теста на основе проверки времени выполнения ( тогда как @Ignore является статическим условием).

Тем не менее, если вы всегда отключили их на основе определенной аннотации, казалось бы, вам на самом деле не нужно делать это во время выполнения. Простое аннотирование классов с помощью @Ignore, а также @Version20 выполнило бы работу и было бы, возможно, более ясным.

Хотя я подозреваю, что вы можете игнорировать только в том случае, если тест работает в режиме "1.0" - в этом случае это интроспекция времени выполнения, и вы можете сделать это с помощью чего-то вроде:

@Before
public void setUp() {
   if (!this.getClass().isAnnotatedWith("Version20")) {
      final String version = System.getProperty("my.app.test.version");
      org.junit.Assume.assumeTrue(version.equals("2.0"));
   }
}