Почему тест junit, пропущенный из-за ошибки предположения, не отображается как пропущенный? - PullRequest
5 голосов
/ 28 сентября 2010

Я использую предположения Junit, чтобы решить, запускать тест или нет.Тесты, в которых допущение не выполняется, игнорируются / пропускаются фреймворком junit.

Интересно, почему пропущенные тесты не отображаются как пропущенные?

Пожалуйста, посмотрите наПример:

import static org.junit.Assert.fail;
import org.junit.Assume;
import org.junit.Test;

public class AssumptionTest {

    @Test
    public void skipAssumptionFailureTest() {
        Assume.assumeTrue("foo".equals("bar"));
        fail("This should not be reached!");
    }
}

Запуск этого теста в проекте maven приводит к:

Running AssumptionTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec

Я бы предпочел, чтобы этот тест был отмечен как «пропущенный».Есть ли шанс достичь этого?

(junit 4.8.1; maven 2.2.1; java 1.6.0_21)

Ответы [ 3 ]

2 голосов
/ 30 августа 2011

Spring предлагает другой вариант аннотации Ignore, который может во время выполнения решить, игнорировать ли тест: @IfProfileValue.В сочетании с ProfileValueSource, поставляемым пользователем в @ProfileValueSourceConfiguration, вы можете выполнять некоторые ограниченные трюки.

См. Документация по весенним испытаниям .

Но это неТо же самое, что иметь возможность выполнить некоторый тестовый код и в середине тестового метода решить проигнорировать тест, как вы можете с предположениями.

2 голосов
/ 04 июня 2013

Хотя предыдущие ответы сами по себе являются хорошими, я бы хотел ответить на вопрос «ПОЧЕМУ».

Проблема возникла из-за того, что тесты проваливались / игнорировались.Когда были добавлены допущения, обычные подсчеты были несколько искажены (при допущении можно игнорировать тесты на полпути во время его выполнения).

С инструментами-бегунами тоже возникали проблемы с этим, что приводило к запутанным отчетам.См. здесь для разговора разработчиков Surefire с людьми из JUnit , и здесь для связанной ошибки Eclipse .

Сейчас это не проблема в Maven, иэто не должно быть в новых Eclipses .Я использую STS на основе eclipse.buildId = 2.9.2.201205071000-RELEASE и все еще испытываю такое поведение.

EDIT: ссылки ссылочного типа не работают.

2 голосов
/ 28 сентября 2010

Вы не можете сделать это «из коробки», так как единственный способ пропустить тесты - это аннотация @Ignore.Тем не менее, я нашел сообщение в блоге , которое может быть именно тем, что вы ищете:

...