2011-12-20 2 views
2

я получил следующий тест, который я поставил попробовать поймать вокруг так терпит неудачу, если фактическое значение не равно ожидаемое значение:Как использовать @Rule в Selenium JUnit провалить тест

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, чтобы сделать тест неудачным, но не может понять это.

+0

Вы поймаете исключение, которое junit выбрасывает, чтобы выполнить тест. Поэтому тест проходит. – oers

+0

Я запускаю их как часть набора, поэтому мне нужно знать, что он провалился. –

+0

проверить версию junit @Rule был введен в junit4.7 – oers

ответ

3

Поскольку @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); 
+0

Спасибо, Мэтью. это работает сейчас. Ура! –

Смежные вопросы