Как использовать @Rule в Selenium Junit, чтобы не пройти тест

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

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

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

Однако Совместный тест все еще проходит.

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

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

@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, чтобы тест провалился, но не могу понять.


person Pritum Patel    schedule 20.12.2011    source источник
comment
Вы поймаете исключение, которое выдает junit, чтобы сделать тест непройденным. Поэтому тест проходит.   -  person oers    schedule 20.12.2011
comment
Я запускаю их как часть пакета, поэтому мне нужно знать, что это не удалось.   -  person Pritum Patel    schedule 20.12.2011
comment
проверьте свою версию junit @Rule был введен в junit4.7   -  person oers    schedule 20.12.2011
comment
Спасибо оэрс. Отсортировано сейчас.   -  person Pritum Patel    schedule 21.12.2011


Ответы (1)


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

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

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

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

Assert.assertEquals("Actual value is not equal to expected value", ExpectedCount, ActualCount);
person Matthew Farwell    schedule 20.12.2011