<aside> ๐ก
test ์์ฑ์ ์ํ 3rd party lib ์ค AssetJ์ ์ฌ์ฉ๋ฒ

</aside>
/* ์ค๋ช
. 1. ๋ฌธ์์ด ํ
์คํธ ํ๊ธฐ */
@Test
@DisplayName("๋ฌธ์์ด ํ
์คํธํ๊ธฐ")
void testStringValidation(){
// given
String expected = "hello world";
// when
String actual = new String(expected);
// then
Assertions.assertThat(actual)
.isNotEmpty() // ๋ฌธ์์ด์ด ๋น์ด์์ง ์์์ง " " -> ๋น์ด์์ง ์๋ค๊ณ ์ธ์ง
.isNotBlank() // ๋ฌธ์์ด์ด ๊ณต๋ฐฑ์ด ์๋ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์๋์ง " " -> ์ด๊ฑฐ๋ฅผ ๋น์ด์๋ค๊ณ ์ด์ง
.contains("hello")
.doesNotContain("hahaha")
.startsWith("h")
.endsWith("d")
.isEqualTo(expected);
}
/* ์ค๋ช
. 2. ์ซ์ ํ
์คํธํ๊ธฐ */
@Test
@DisplayName("์ซ์ ํ
์คํธํ๊ธฐ")
void testIntegerValidation(){
double pi = Math.PI;
Double actual = pi;
Assertions.assertThat(actual)
.isPositive()
.isGreaterThan(3)
.isLessThan(4)
.isEqualTo(Math.PI);
}
/* ์ค๋ช
. 3. ๋ ์ง ํ
์คํธํ๊ธฐ */
@Test
@DisplayName("๋ ์ง ํ
์คํธํ๊ธฐ")
void testLoclDateTimeValidation(){
String birthday = "2014-09-18T16:42;00.000";
LocalDateTime theDay = LocalDateTime.parse(birthday);
Assertions.assertThat(theDay)
.hasYear(2014)
.hasMonthValue(9)
.hasMonth(Month.SEPTEMBER)
.hasDayOfMonth(10)
.isBetween("2014-01-01T0:00;00.000","2014-12-31T23:59;59.000")
.isBefore(LocalDateTime.now());
}
/* ์ค๋ช
. 4. ์์ธ ํ
์คํธํ๊ธฐ */
@Test
@DisplayName("์์ธ ํ
์คํธํ๊ธฐ")
void testExceptionValidation(){
/* ์ค๋ช
. ์์ ๋ฅผ ์ํด Throwable ํ์
์ ์ํ๋ ์์ ์ ๋ง๋ค์ด ๋ณผ ์๋ ์๊ธดํ๋ค. */
Throwable thrown = AssertionsForClassTypes.catchThrowable(() -> {
throw new IllegalArgumentException("์๋ชป๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์
๋ ฅํ์
จ์ต๋๋ค");
});
int firstNum = 10;
int secondNum = 0;
NumberValidator numberValidator = new NumberValidator();
Exception exception = org.junit.jupiter.api.Assertions.assertThrows(
Exception.class,
() -> numberValidator.checkDividableNumbers(firstNum, secondNum)
);
// Assertions.assertThat(thrown)
Assertions.assertThat(exception)
.isInstanceOf(IllegalArgumentException.class)
// .hasMessageContaining("ํ๋ฆฌ๋ฏธํฐ");
.hasMessageContaining("1์ผ๋ก");
}
/* ์ค๋ช
. 5. filter๋ฅผ ์ด์ฉํ ๋จ์ ๋ฌธ ํ
์คํธํ๊ธฐ */
@Test
@DisplayName("filtering assertions ํ
์คํธํ๊ธฐ")
void testFilteringAssertions(){
Member member1 = new Member(1, "user01", "ํ๊ธธ๋", 20);
Member member2 = new Member(2, "user02", "์ ๊ด์", 16);
Member member3 = new Member(3, "user03", "์ด์์ ", 40);
Member member4 = new Member(4, "user04", "์ ์ฌ์๋น", 43);
Member member5 = new Member(5, "user05", "์๊บฝ์ ", 19);
List<Member> members = Arrays.asList(member1,member2,member3,member4,member5);
/* ์ค๋ช
. ์ฌ๋ฌ ์์๋ฅผ ์ํํ๋ฉฐ stream ๋ฌธ๋ฒ์ฒ๋ผ filtering์ ๊ฒ
์ด์ ๋จ์ ๋ฌธ์ ์์ฑํ ์ ์๋ค. */
// Assertions.assertThat(members)
// .filteredOn(member -> member.getAge() > 20)
// .containsOnly(member3, member4);
Assertions.assertThat(members)
.filteredOn("age", 20)
.containsOnly(member1);
}
package com.haenin.assertions.section02.assertj;
public class Member {
private int sequence;
private String id;
private String name;
private int age;
public Member() {
}
public Member(int sequence, String id, String name, int age) {
this.sequence = sequence;
this.id = id;
this.name = name;
this.age = age;
}
public int getSequence() {
return sequence;
}
public void setSequence(int sequence) {
this.sequence = sequence;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}