JUnit với Matchers và assertThat.
Thông thường ta chỉ kiểm tra / expect kết quả của một unit bằng một giá trị nào đó. Với những trường hợp kết quả không cố định mà thường theo một định dạng nào đó thì ta sẽ cần phải sử dụng Matchers và assertThat.
(Ở bài test exception với JUnit mình có sử dụng assertThat và Matchers để kiểm tra loại exception nào được ném ra và message có bao gồm thông tin gì).
assertThat và Matchers
assertThat là một cơ chế mới của assertion, cú pháp của assertThat như sau:
Matcher statement chính là cú pháp so sánh, expect kết quả.
Với matchers có thể expect kết quả rất linh hoạt, áp dụng với cả beans, text, number, collections...
Core
anything
describedAs
is
Logical
allOf
anyOf
not
Object
equalTo
hasToString
instanceOf
,isCompatibleType
notNullValue
,nullValue
sameInstance
Beans
hasProperty
Collections
array
hasEntry
,hasKey
,hasValue
hasItem
,hasItems
hasItemInArray
Number
closeTo
greaterThan
,greaterThanOrEqualTo
,lessThan
,lessThanOrEqualTo
Text
equalToIgnoringCase
equalToIgnoringWhiteSpace
containsString
,endsWith
,startsWith
...
Để sử dụng các cú pháp của matchers ta khai báo thư viện hamcrest-all:
(khi khai báo thư viện junit nó chỉ include thư viện hamcrest-core, không có các matcher cho bean, collection...)
Ví dụ:
Okay, Done!
References:
https://github.com/junit-team/junit4/wiki/Matchers-and-assertThat
https://code.google.com/archive/p/hamcrest/wikis/Tutorial.wiki