AssertJ - huongpt-1499/android_testing_samplecode GitHub Wiki
Overview
AssertJ là một thư viện Java cung cấp tập hợp các assertions phong phú, các thông báo lỗi hữu ích, cải thiện khả năng đọc code đơn giản hơn...
How to use
Supported Java version
Phiên bản AssertJ core phụ thuộc vào Java version :
- AssertJ Core 3.x yêu cầu từ Java 8 trở lên
- AssertJ Core 2.x yêu cầu từ Java 7 trở lên
Android Support
AssertJ không hỗ trợ chính thức cho Android nhưng hầu hết Android đều tương thích
- AssertJ Core 3.x tương thích với API 26+, ngoại trừ soft assertions và asumptions
- AsertJ Core 2.x tương thích với API 26+ , với API <26 ngoại trừ Path assertions.
testCompile("org.assertj:assertj-core:3.13.2")
testCompile("org.assertj:assertj-core:2.9.1")
Basic Assertions
assertThat(frodo.getName()).isEqualTo("Frodo");
assertThat(frodo).isNotEqualTo(sauron);
Chaining string assertions
assertThat(frodo.getName()).startsWith("Fro")
.endsWith("do")
.isEqualToIgnoringCase("frodo");
Collections assertions
// Supposed fellowshipOfTheRing is a List<TolkienCharacter>
assertThat(fellowshipOfTheRing).hasSize(9)
.contains(frodo, sam)
.doesNotContain(sauron);
as() assertions
as() được sử dụng để mô tả test và sẽ show trước khi thông báo lỗi
assertThat(frodo.getAge()).as("check %s's age", frodo.getName()).isEqualTo(33);
Exception assertions
assertThatThrownBy(() -> { throw new Exception("boom!"); }).hasMessage("boom!");
Extracting assertions
Sử dụng tích năng extracting (giải nén) để kiểm tra các tên của list fellowshipOfTheRing :
assertThat(fellowshipOfTheRing).extracting(TolkienCharacter::getName)
.doesNotContain("Sauron", "Elrond");
Để trích xuất nhiều giá trị cùng một lúc được nhóm trong một bộ dữ liệu :
assertThat(fellowshipOfTheRing).extracting("name", "age", "race.name")
.contains(tuple("Boromir", 37, "Man"),
tuple("Sam", 38, "Hobbit"),
tuple("Legolas", 1000, "Elf"));
Filter collections
Để lọc tập dữ liệu trước khi thực test :
assertThat(fellowshipOfTheRing).filteredOn(character -> character.getName().contains("o"))
.containsOnly(aragorn, frodo, legolas, boromir);
Combine filtering vs extraction
assertThat(fellowshipOfTheRing).filteredOn(character -> character.getName().contains("o"))
.containsOnly(aragorn, frodo, legolas, boromir)
.extracting(character -> character.getRace().getName())
.contains("Hobbit", "Elf", "Man");
Ngoài những bộ assert trên, còn rất nhiều assertions nữa như :
- iterable
- stream
- array
- map
- dates
- path
- file
- numbers
- predicate
- options
- ...
Ref : https://assertj.github.io/doc/#assertj-core-assertions-guide