μλ°λ€μ(Javaε€θ) 2νΈ.
1. @AfterEach
μ΄λ
Έν
μ΄μ
.
-
@AfterEach
μ΄λ Έν μ΄μ μ JUnit 5μμ μ 곡νλ κΈ°λ₯μ λλ€. - κ° ν μ€νΈ λ©μλκ° μ€νλ νμ μνλμ΄μΌ νλ μμ μ μ§μ νλ λ° μ¬μ©λ©λλ€.
- μ΄ μ΄λ Έν μ΄μ μ ν μ€νΈ ν΄λμ€ λ΄μ λ©μλμ μ μ©νμ¬ ν μ€νΈ λ©μλκ° λν ν νμν μ 리 μμ (cleanup)μ μνν μ μλλ‘ ν©λλ€.
μ£Όμ μν
1. μμ ν΄μ : ν μ€νΈ λ©μλκ° μ¬μ©ν μμ(μ: νμΌ, λ°μ΄ν°λ² μ΄μ€ μ°κ²°, λ€νΈμν¬ μ°κ²° λ±)μ ν΄μ νλ λ° μ¬μ©λ©λλ€.
2. μν μ΄κΈ°ν : ν μ€νΈκ° μλ£λ ν μνλ₯Ό μ΄κΈ°ννμ¬ λ€μ ν μ€νΈκ° κΉ¨λν νκ²½μμ μ€νλ μ μλλ‘ ν©λλ€.
3. λ‘κ·Έ κΈ°λ‘ : ν μ€νΈ μ€ν κ²°κ³Όλ₯Ό λ‘κ·Έμ κΈ°λ‘νκ±°λ μΆκ°μ μΈ λΆμμ μν΄ λ°μ΄ν°λ₯Ό μ μ₯νλ λ° μ¬μ©ν μ μμ΅λλ€.
μμ μ½λ
μλλ @AfterEach
μ΄λ
Έν
μ΄μ
μ μ¬μ©ν κ°λ¨ν μμ μ
λλ€.
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class MyTest {
@BeforeEach
void setUp() {
System.out.println("Setting up before each test");
}
@Test
void testMethod1() {
System.out.println("Executing test method 1");
}
@Test
void testMethod2() {
Systemo.out.println("Executing test method 2");
}
@AfterEach
void tearDown() {
System.out.println("Tearing down after each test")
}
}
μ€ν μμ
-
setUp()
: κ° ν μ€νΈ λ©μλ μ€ν μ @BeforeEach
λ©μλκ° νΈμΆλ©λλ€. -
testMethod1()
: 첫 λ²μ§Έ ν μ€νΈ λ©μλκ° μ€νλ©λλ€. -
tearDown()
: 첫 λ²μ§Έ ν μ€νΈ λ©μλ μ€ν ν@AfterEach
λ©μλκ° νΈμΆλ©λλ€. -
setUp()
: λ λ²μ§Έ ν μ€νΈ λ©μλ μ€ν μ @BeforeEach
λ©μλκ° λ€μ νΈμΆλ©λλ€. -
testMethod2()
: λ λ²μ§Έ ν μ€νΈ λ©μλκ° μ€νλ©λλ€. -
tearDown()
: λ λ²μ§Έ ν μ€νΈ λ©μλ μ€ν ν@AfterEach
λ©μλκ° νΈμΆλ©λλ€.
μμ½
-
@AfterEach
μ΄λ Έν μ΄μ μ κ° ν μ€νΈ λ©μλ μ€ν ν νΈμΆλλ λ©μλλ₯Ό μ§μ ν©λλ€. - μ£Όλ‘ μμ ν΄μ , μν μ΄κΈ°ν, λ‘κ·Έ κΈ°λ‘ λ±μ μμ μ μννλ λ° μ¬μ©λ©λλ€.
- κ° ν μ€νΈ λ©μλλ§λ€ μ€νλλ―λ‘, ν μ€νΈ κ°μ λ 립μ±μ μ μ§νκ³ κΉ¨λν ν μ€νΈ νκ²½μ 보μ₯ν μ μμ΅λλ€.
2. @Builder
μ΄λ
Έν
μ΄μ
.
-
@Builder
λ Lombok λΌμ΄λΈλ¬λ¦¬μμ μ 곡νλ μ΄λ Έν μ΄μ μΌλ‘, λΉλ ν¨ν΄μ κ°νΈνκ² μ¬μ©ν μ μλλ‘ μ§μν©λλ€. - λΉλ ν¨ν΄μ κ°μ²΄μ μμ±κ³Ό κ΄λ ¨λ 볡μ‘μ±μ μ€μ΄κ³ , κ°λ
μ±μ λμ΄λ©°, κ°λ³ κ°μ²΄λ₯Ό λ§λ€μ§ μλλ‘ λμμ€λλ€.
- νΉν, λ§μ νλλ₯Ό κ°μ§ κ°μ²΄λ₯Ό μμ±ν λ μ μ©ν©λλ€.
μ£Όμ νΉμ§ λ° μν .
-
μ μ°ν κ°μ²΄ μμ±
- λΉλ ν¨ν΄μ μ¬μ©νλ©΄ κ°μ²΄λ₯Ό μμ±ν λ μμ±μλ μ μ ν©ν 리 λ©μλλ³΄λ€ λ μ μ°νκ² κ°μ²΄λ₯Ό ꡬμ±ν μ μμ΅λλ€.
- νμν νλλ§ μ€μ ν μ μκ³ , μ€μ μμμ ꡬμ λ°μ§ μμ΅λλ€.
-
κ°λ
μ± ν₯μ
- λ§μ νλλ₯Ό κ°μ§ κ°μ²΄λ₯Ό μμ±ν λ, λΉλ ν¨ν΄μ μ¬μ©νλ©΄ μ½λμ κ°λ μ±μ΄ λμμ§λλ€.
- κ° νλμ μ΄λ¦μ λͺ μμ μΌλ‘ μ€μ ν μ μμ΄ μ΄λ€ κ°μ΄ μ΄λ€ νλμ μ€μ λλμ§ μ½κ² ν μ μμ΅λλ€.
-
λΆλ³ κ°μ²΄ μμ±
- λΉλ ν¨ν΄μ μ¬μ©νλ©΄ λΆλ³ κ°μ²΄λ₯Ό μ½κ² μμ±ν μ μμ΅λλ€.
- κ°μ²΄κ° μμ±λ νμλ νλ κ°μ λ³κ²½ν μ μμ΅λλ€.
μ¬μ© μμ
Lombok μμ΄ λΉλ ν¨ν΄ ꡬν
public class User {
private final String name;
private final int age;
private final String email;
private User(UserBuilder builder) {
this.name = builder.name;
this.age = builder.age;
this.email = builder.email;
}
public static class UserBuilder {
private String name;
private int age;
private String email;
public UserBuilder setName(String name) {
this.name = name;
return this;
}
public UserBuilder setAge(int age) {
this.age = age;
return this;
}
public UserBuilder setEmail(String email) {
this.email = email;
return this;
}
public User build() {
return new User(this);
}
}
}
Lombokμ μ¬μ©ν λΉλ ν¨ν΄ ꡬν
Lombokμ @Builder
μ΄λ
Έν
μ΄μ
μ μ¬μ©νλ©΄ μμ μ½λκ° ν¬κ² λ¨μΆλ©λλ€.
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class User {
private String name;
private int age;
private String email;
}
κ°μ²΄ μμ± μμ
μμ Lombokμ μ¬μ©ν User
ν΄λμ€λ₯Ό μ΄μ©ν΄ κ°μ²΄λ₯Ό μμ±νλ μμμ
λλ€.
public class Main {
public static void main(String[] args) {
User user = User.builder()
.name("devKobe")
.age(77)
.email(devKobe@gamil.com)
.build();
System.out.println(user.getName()); // devKobe
System.out.println(user.getAge()); // 77
System.out.println(user.getEmail()) // devKobe@gmail.com
}
}
μ μμμ²λΌ Lombokμ @Builder
λ₯Ό μ¬μ©νλ©΄ λΉλ ν¨ν΄μ κ°λ¨νκ² κ΅¬ννκ³ μ¬μ©ν μ μμ΅λλ€.
μ΄λ‘ μΈν΄ κ°μ²΄ μμ± μ½λκ° λ κΉλνκ³ μ§κ΄μ μΌλ‘ λ³ν©λλ€.