Ранее я писал в блоге о Hamcrest и использую его методы assertThat по сравнению с JSnit .
Однако я быстро открыл FEST Assertions и с радостью переключился на него. Он обеспечивает ту же улучшенную читаемость теста и улучшает сообщения об ошибках, что и Hamcrest, но имеет дополнительное преимущество, заключающееся в включении автозаполнения IDE, вместо того, чтобы выполнять поиск по пакетам и документам классов, чтобы найти правильное соответствие.
К сожалению, Fest, похоже, уже не активно развивается. Последний стабильный выпуск ветки 1.x , 1.4, был выпущен еще в 2011 году, а новая ветка 2.x никогда не выходила в стабильный выпуск и не имела фиксации с июня 2013 года.
Введите AssertJ …
Assert J
AssertJ является ответвлением Fest Assert и, похоже, предоставляет все преимущества, а также множество новых функций .
Коллекции
Например, он имеет все изящные обработки коллекций, которые мне так понравились в Fest:
1
2
3
4
5
6
|
List<String> stringList = Lists.newArrayList( "A" , "B" , "C" ); assertThat(stringList).contains( "A" ); //true assertThat(stringList).doesNotContain( "D" ); //true assertThat(stringList).containsOnly( "A" ); //false assertThat(stringList).containsExactly( "A" , "C" , "B" ); //false assertThat(stringList).containsExactly( "A" , "B" , "C" ); //true |
Соберите все ошибки до сбоя
Он также имеет возможность перехватывать все сбои перед тем, как потерпеть неудачу. Например, приведенный выше пример потерпит неудачу как первое ошибочное предположение. Приведенный ниже пример позволяет увидеть все ошибочные утверждения:
1
2
3
4
5
6
7
8
|
List<String> stringList = Lists.newArrayList( "A" , "B" , "C" ); SoftAssertions softly = new SoftAssertions(); softly.assertThat(stringList).contains( "A" ); //true softly.assertThat(stringList).containsOnly( "A" ); //false softly.assertThat(stringList).containsExactly( "A" , "C" , "B" ); //false softly.assertThat(stringList).containsExactly( "A" , "B" , "C" ); //true // Don't forget to call SoftAssertions global verification! softly.assertAll(); |
И приводит к сообщению, как это:
01
02
03
04
05
06
07
08
09
10
|
The following 2 assertions failed: 1 ) Expecting: <[ "A" , "B" , "C" ]> to contain only: <[ "A" ]> elements not found: <[]> and elements not expected: <[ "B" , "C" ]> |
1
2
3
4
5
|
2 ) Actual and expected have the same elements but not in the same order, at index 1 actual element was: < "B" > whereas expected element was: < "C" > |
Определенно стоит посмотреть. Код ядра AssertJ и система отслеживания ошибок размещаются на github.
Ссылка: | AssertJ> Fest> Hamcrest от нашего партнера JCG |