2015-05-28 3 views
0

я бегу следующий тест в моем Затмении (с аргументами -EA):Почему мой тест Junit-AssertionError-Test терпит неудачу?

public class ColorHelperTest 
{ 
    @Rule 
    public ExpectedException thrown = ExpectedException.none(); 

    @Test 
    public void testGetColorByString() 
    { 
     thrown.expect(AssertionError.class); 
     assert 1 == 2; 
    } 
} 

Выход:

java.lang.AssertionError 
at de.*.*.*.mytests.ColorHelperTest.testGetColorByString(ColorHelperTest.java:28) 

28 является линия assert 1==2

Почему этот тест не получится?

ответ

2

Вы не можете «ожидать» AssertionError, это определенный тип ошибки, JUnit использует, чтобы сигнализировать о том, что тест не удается.

Update: Оказывается, это ошибка из JUnit 4.11, и он был решен в 4.12: https://github.com/junit-team/junit/blob/master/doc/ReleaseNotes4.12.md#pull-request-583-pull-request-720-fix-handling-of-assertionerror-and-assumptionviolatedexception-in-expectedexception-rule

+0

Спасибо, что отвечает на мой вопрос. Позор, что ... –

1

Ключевое слово assert - это флаг уровня JRE и не имеет ничего общего с JUnit. Я думаю, что вы действительно ищете это:

assertEquals(1, 2); 
+0

К сожалению, может быть, я в заблуждение вас, но утверждают лишь пример, который я не забочусь.. if 1! = 2 ;-) –

+0

Я хочу узнать, как поймать AssertionErrors, брошенную другими методами. –

1

Интересно ... Какая версия JUnit вы используете? Использование 4.12 (в моем pom.xml выглядит следующим образом:

<dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 

точно такой же тест работает для меня

+0

Я использую Junit 4.11 –

+0

Вы установили флаг '-ea'? Без него ключевое слово 'assert' игнорируется. –

+0

сделал. Также я бы не получил AssertionError, если бы не сделал этого. –

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