Open thienphuong opened 5 years ago
Cách thứ 2, chúng ta có thể sử dụng Hamcrest, thư viện này đã có sẵn trong JUnit
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.Is.not;
.....
// So sánh bằng
assertThat(actual, is(equalTo(expected)));
....
// So sánh khác
assertThat(actual, is(not(equalTo(expected))));
....
// Kiểm tra có chứa kết quả mong đợi
assertThat(acutalTitle, containsString(actualExpect));
So sánh giữa hai cách viết trên thì cách dùng Hamcrest vs Junit thì nó có một số lợi ích sau:
assertTrue(expected.contains(actual));
java.lang.AssertionError at ...
Thì thông báo lỗi của Hamcrest chi tiết và cụ thể hơn
assertThat(actual, containsString(expected));
java.lang.AssertionError:
Expected: a string containing "Selenium Vietnam"
got: "Give me your best"
run-time
assertEquals("abc", 123);
chương trình vẫn biên dịch nhưng khi chạy sẽ báo lỗi
assertThat(123, is("abc"));
Báo lỗi biên dịch .... Tham khảo thêm tại đây
Cách thứ 3 sử dụng assertj | tài liệu mới nhất
Để sử dụng thư viện này, đảm bảo rằng trong pom.xml đã add thêm dependency sau
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.6.2</version>
<scope>test</scope>
</dependency>
Mã chương trình sẽ giống như mẫu sau
import static org.assertj.core.api.Assertions.assertThat;
.....
// So sánh bằng
assertThat(actual).isEqualTo(expected);
....
// So sánh khác
assertThat(actual).contains(expected);
....
// Kiểm tra có chứa kết quả mong đợi
assertThat(actual). isNotEqualTo(expected);
... Tham khảo thêm tại đây hoặc xem các example
So sánh Hamcrest vs assertj
Sách tham khảo
Ngoài ra có thể tham khảo thêm Truth của google
Tránh được lỗi run-time assertEquals("abc", 123); chương trình vẫn biên dịch nhưng khi chạy sẽ báo lỗi assertThat(123, is("abc"));Báo lỗi biên dịch
em chạy thử 2 trường hợp này nó đều run thầy ạ
Sao của em lại bị gạch như thế này vậy thầy?
Không sao cả. Đơn giản nó để @Deprecated
trong source code. Nghiã là unused. Không còn được dùng nữa. Với phiên bản sau này, nó không khuyến kích dùng nó nữa.
Trong Bài 01: Để kiểm tra kết quả mong đợi. chúng ta đã dùng JUnit