Как использовать @Rule в Selenium Junit для провала теста - PullRequest
2 голосов
/ 20 декабря 2011

У меня есть следующий тест, который я включил в попытку, поэтому он не работает, если фактическое значение не равно ожидаемому значению:

    try{
        Assert.assertEquals(ExpectedCount, ActualCount);
    }catch (Throwable t){
         System.out.println ("Actual value is not equal to expected value");
    }

Каждый раз, когда я запускаю этот тест, он проходит.Однако, если ожидается = фактическое сообщение не печатается, что является правильным.Если они не равны, то сообщение, которое я напечатал.Таким образом, логика теста верна.

Однако тест Juint все еще проходит.

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

(добавлено на общедоступном уровне в классе теста)

@Rule

Public ErrorCollected errCollector = new ErrorCollector();

Добавлено:

errCollector.addError(t);

Под

System.out.println ("Actual value is not equal to expected value");

Я получаю сообщение об ошибке "Rule cannot be resolved to a type" Это не дает мне возможности импортировать.

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

1 Ответ

3 голосов
/ 21 декабря 2011

Как говорит @oers, причина, по которой вы не можете найти правило, возможно, в том, что ваша версия JUnit слишком старая.Попробуйте более позднюю версию,> 4.7.

Самое простое решение вашей проблемы - просто сбросить исключение, которое вы ловите:

try {
    Assert.assertEquals(ExpectedCount, ActualCount);
} catch (Throwable t) {
    System.out.println ("Actual value is not equal to expected value");
    throw t;
}

, но вам нужно будет добавить броски Throwableк вашему методу испытаний.У вас есть другая альтернатива, чтобы добавить описание к вашему утверждению:

Assert.assertEquals("Actual value is not equal to expected value", ExpectedCount, ActualCount);
...