Skip to content

Commit e3a7469

Browse files
committed
test: Add builder pattern
1 parent 7d959db commit e3a7469

File tree

2 files changed

+130
-0
lines changed

2 files changed

+130
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.hyeonah.javalabs.designpattern.builderpattern.step1;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.time.LocalDate;
6+
7+
import static org.assertj.core.api.Assertions.assertThat;
8+
9+
class PersonTest {
10+
11+
/* 필요에 따라 다양한 파라미터 생성자를 만들어줘야 한다.*/
12+
private Person person;
13+
14+
@Test
15+
void all_params_constructor() {
16+
// given
17+
final String firstName = "firstName";
18+
final String lastName = "lastName";
19+
final String phoneNumber = "01011112222";
20+
final String address = "address";
21+
final String addressDetail = "addressDetail";
22+
final int age = 20;
23+
final String sex = "WOMAN";
24+
final LocalDate birthDay = LocalDate.of(2001, 4, 16);
25+
26+
// when
27+
// 1. 점층적 생성자 패턴
28+
// person = new Person("firstName",
29+
// "lastName",
30+
// "01011112222",
31+
// "address",
32+
// "addressDetail",
33+
// 20,
34+
// "WOMAN",
35+
// LocalDate.of(2001,4,16));
36+
37+
// 2. 자바빈 패턴
38+
person = new Person();
39+
person.setFirstName(firstName);
40+
person.setLastName(lastName);
41+
person.setPhoneNumber(phoneNumber);
42+
person.setAddress(address);
43+
person.setAddressDetail(addressDetail);
44+
person.setAge(age);
45+
person.setSex(sex);
46+
person.setBirthDay(birthDay);
47+
48+
// then
49+
assertThat(person.getFirstName()).isEqualTo(firstName);
50+
assertThat(person.getLastName()).isEqualTo(lastName);
51+
assertThat(person.getAddress()).isEqualTo(address);
52+
}
53+
54+
@Test
55+
void specific_param_constructor() {
56+
// given
57+
final String firstName = "first";
58+
final String lastName = "last";
59+
60+
// when
61+
person = new Person();
62+
person.setFirstName(firstName);
63+
person.setLastName(lastName);
64+
65+
// then
66+
assertThat(person.getFirstName()).isEqualTo(firstName);
67+
assertThat(person.getLastName()).isEqualTo(lastName);
68+
assertThat(person.getAddress()).isNull();
69+
}
70+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.hyeonah.javalabs.designpattern.builderpattern.step2;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.time.LocalDate;
6+
7+
import static org.assertj.core.api.Assertions.assertThat;
8+
9+
class PersonBuilderTest {
10+
11+
private Person person;
12+
13+
@Test
14+
void all_params_builderTest() {
15+
// given
16+
final String firstName = "FirstName";
17+
final String lastName = "LastName";
18+
final String phoneNumber = "01022223333";
19+
final String address = "Address";
20+
final String addressDetail = "AddressDetail";
21+
final int age = 20;
22+
final String sex = "WOMAN";
23+
final LocalDate birthDay = LocalDate.of(2001, 4, 16);
24+
25+
// when
26+
person = new Person
27+
.PersonBuilder(firstName, lastName, phoneNumber, address, addressDetail, birthDay)
28+
.age(age)
29+
.sex(sex)
30+
.build();
31+
32+
// then
33+
assertThat(person.getFirstName()).isEqualTo(firstName);
34+
assertThat(person.getAddress()).isEqualTo(address);
35+
assertThat(person.getAge()).isEqualTo(age);
36+
assertThat(person.getSex()).isEqualTo(sex);
37+
}
38+
39+
@Test
40+
void Specified_param_builderTest() {
41+
// given
42+
final String firstName = "FirstName";
43+
final String lastName = "LastName";
44+
final String phoneNumber = "01022223333";
45+
final String address = "Address";
46+
final String addressDetail = "AddressDetail";
47+
final LocalDate birthDay = LocalDate.of(2001, 4, 16);
48+
49+
// when
50+
person = new Person
51+
.PersonBuilder(firstName, lastName, phoneNumber, address, addressDetail, birthDay)
52+
.build();
53+
54+
// then
55+
assertThat(person.getFirstName()).isEqualTo(firstName);
56+
assertThat(person.getAddress()).isEqualTo(address);
57+
assertThat(person.getAge()).isZero();
58+
assertThat(person.getSex()).isEqualTo("MAN");
59+
}
60+
}

0 commit comments

Comments
 (0)