μλ°λ€μ(Javaε€θ) 1νΈ.
1. βmainClassNameβ μμ± μΆκ°.
λ©μΈ ν΄λμ€μ κ²½λ‘λ₯Ό μ§μ ν΄μ£Όλ μμ±μ μΆκ°νλ λ°©λ²μ
λλ€.
μ΄κΈ° μ§μ
μ μ μ§μ ν΄μ€λ€κ³ μκ°νλ©΄ λ©λλ€.
-
application
λΈλ‘ μμ λ©μΈ ν΄λμ€ μ΄λ¦μ μ§μ ν©λλ€. μλ₯Ό λ€μ΄, λ©μΈ ν΄λμ€κ°com.example.Main
μ΄λΌκ³ κ°μ ν©λλ€. - μλμ μ½λλ
bundle.gradle
νμΌ λ΄λΆμμ μμ ν΄μΌ ν©λλ€.
plugins {
id 'java'
id 'application'
}
application {
mainClassName = 'com.example.Main' // μ¬κΈ°μ λ©μΈ ν΄λμ€μ κ²½λ‘λ₯Ό μ
λ ₯ν©λλ€.
applicationDefaultJvmArgs = [
"-XX:+EnableDynamicAgentLoading",
"-Djdk.instrument.traceUsage"
]
}
repositories {
mavenCentral()
}
dependencies {
// Your dependencies here
}
λ©μΈ ν΄λμ€ μμ
- μλ₯Ό λ€μ΄, λ©μΈ ν΄λμ€λ λ€μκ³Ό κ°μ΄ μκ²Όμ μ μμ΅λλ€.
package com.example;
public class Main {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
2. @ExtendWith
μ΄λ
Έν
μ΄μ
.
-
@ExtendWith
μ΄λ Έν μ΄μ μ Junit 5μμ μ 곡νλ κΈ°λ₯μΌλ‘, ν μ€νΈ ν΄λμ€λ λ©μλμ νμ₯ κΈ°λ₯μ μΆκ°ν μ μλλ‘ ν΄μ€λλ€. - JUnit 5μ νμ₯ λͺ¨λΈμ λ€μν νμ₯ κΈ°λ₯μ ν΅ν΄ ν μ€νΈ μ€νμ νΉμ μ§μ μμ μ¬μ©μ μ μ λμμ μνν μ μκ² ν©λλ€.
@ExtendWith
μ΄λ
Έν
μ΄μ
μ μν
-
νμ₯ ν΄λμ€ μ§μ :
@ExtendWith
μ΄λ Έν μ΄μ μ νμ₯ ν΄λμ€λ₯Ό μ§μ ν μ μμ΅λλ€. μ§μ λ νμ₯ ν΄λμ€λ ν μ€νΈ λΌμ΄νμ¬μ΄ν΄μ νΉμ μ§μ μμ νΈμΆλ©λλ€.- μλ₯Ό λ€μ΄, ν μ€νΈ μ€ν μ ν, κ° ν μ€νΈ λ©μλ μ ν λ± λ€μν μμ μμ νΉμ λμμ μΆκ°ν μ μμ΅λλ€.
-
컨ν μ€νΈ μ€μ λ° μ£Όμ : νμ₯ κΈ°λ₯μ ν΅ν΄ ν μ€νΈ 컨ν μ€νΈλ₯Ό μ€μ νκ³ , ν μ€νΈ λ©μλμ νμν κ°μ²΄λ 리μμ€λ₯Ό μ£Όμ ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ ν μ€νΈ μ½λλ₯Ό λ κ°κ²°νκ³ λͺ¨λνν μ μμ΅λλ€.
-
μ‘°κ±΄λΆ μ€ν : νΉμ 쑰건μ λ°λΌ ν
μ€νΈ λ©μλλ₯Ό μ€ννκ±°λ 건λλΈ μ μλλ‘ μ§μν©λλ€.
- μλ₯Ό λ€μ΄, νΉμ νκ²½ μ€μ μ΄λ μμ€ν μνμ λ°λΌ ν μ€νΈ μ€ν μ¬λΆλ₯Ό κ²°μ ν μ μμ΅λλ€.
- 컀μ€ν μ΄μμ λ° λ³΄κ³ : νμ₯μ ν΅ν΄ μ¬μ©μ μ μ μ΄μμ λ‘μ§μ μΆκ°νκ±°λ ν μ€νΈ κ²°κ³Όλ₯Ό 컀μ€ν λ°©μμΌλ‘ λ³΄κ³ ν μ μμ΅λλ€.
μμ μ½λ
μλλ @ExtendWith
μ΄λ
Έν
μ΄μ
μ μ¬μ©ν κ°λ¨ν μμ μ
λλ€.
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.Test;
class MyExtension implements BeforeEachCallback {
@Override
public void beforeEach(ExtensionContext context) {
System.out.println("Before each test method");
}
}
@ExtendWith(MyExtension.class)
public class MyTest {
@Test
void testMethod1() {
System.out.println("Test method 1");
}
@Test
void testMethod2() {
System.out.println("Test method 2");
}
}
- μ μ½λμμ
MyExtension
ν΄λμ€λBeforeEachCallback
μΈν°νμ΄μ€λ₯Ό ꡬννμ¬ κ° ν μ€νΈ λ©μλκ° μ€νλκΈ° μ μ λ©μμ§λ₯Ό μΆλ ₯ν©λλ€. -
@ExtendWith(MyExtension.class)
μ΄λ Έν μ΄μ μ ν΅ν΄MyTest
ν΄λμ€μ μ΄ νμ₯ κΈ°λ₯μ μΆκ°νμ΅λλ€.- λ°λΌμ κ° ν μ€νΈ λ©μλ μ€ν μ μ βBefore each test methodβ λ©μμ§κ° μΆλ ₯λ©λλ€.
- μ΄μ²λΌ
@ExtendWith
μ΄λ Έν μ΄μ μ JUnit 5μ νμ₯ λͺ¨λΈμ νμ©νμ¬ ν μ€νΈμ νμν λ€μν κΈ°λ₯μ μΆκ°ν μ μκ² ν΄μ€λλ€.
3. μ΄μμ (Assertion)
- μ΄μμ (Assertion)μ νλ‘κ·Έλλ° λ° μννΈμ¨μ΄ ν μ€νΈμμ μ½λμ νΉμ μνλ μ‘°κ±΄μ΄ μ°ΈμΈμ§ νμΈνλ λ° μ¬μ©λλ λ¬Έμ₯μ΄λ λͺ λ Ήλ¬Έμ μλ―Έν©λλ€.
- μ΄μμ μ ν΅ν΄ μ½λμ λ Όλ¦¬μ μΌκ΄μ±κ³Ό μ νμ±μ κ²μ¦ν μ μμΌλ©°, μ£Όλ‘ λλ²κΉ κ³Ό ν μ€νΈμ μ¬μ©λ©λλ€.
μ£Όμ κΈ°λ₯κ³Ό λͺ©μ .
-
쑰건 κ²μ¦ : μ΄μμ (Assertion)μ νΉμ μ‘°κ±΄μ΄ μ°ΈμΈμ§ κ²μ¦ν©λλ€. μ‘°κ±΄μ΄ κ±°μ§μ΄λ©΄ νλ‘κ·Έλ¨μ μ¦μ μ€νμ μ€λ¨νκ³ μ€λ₯λ₯Ό λ³΄κ³ ν©λλ€.
-
λλ²κΉ λꡬ : μ΄μμ (Assertion)μ κ°λ° μ€μ μ½λμ μ€λ₯λ₯Ό μ‘°κΈ°μ λ°κ²¬νκ³ μμ νλ λ° λμμ΄ λ©λλ€. μ½λμ κ°μ μ΄ μλͺ»λ κ²½μ° μ΄μμ μ ν΅ν΄ λ¬Έμ λ₯Ό 빨리 μ°Ύμ μ μμ΅λλ€.
-
λ¬Έμν : μ΄μμ (Assertion)μ μ½λμ λ Όλ¦¬μ μ μ 쑰건μ λͺ μμ μΌλ‘ νννμ¬, μ½λκ° μ΄λ€ μνμ μλν΄μΌ νλμ§ λͺ ννκ² λνλ λλ€.
μ΄μμ (Assertion)μ μ
-
μλ°(Java)
public void setAge(int age) { assert age > 0 : "Age must be positive"; this.age = age; }
-
JUnit (Java)
```java
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class MyTest {
@Test
void testAddition() {
int result = 2 + 3;
assertEquals(5, result, "2 + 3 should equal 5");
} } ```
μ΄μμ μ¬μ© μκΈ°
- κ°λ° μ€ : κ°λ°μκ° μ½λμ λ Όλ¦¬μ μΌκ΄μ±μ κ²μ¦νκΈ° μν΄ μ¬μ©ν©λλ€. λλ²κΉ κ³Όμ μμ μ£Όλ‘ μ¬μ©λλ©°, νλ‘λμ νκ²½μμλ λ³΄ν΅ λΉνμ±νν©λλ€.
- ν μ€νΈ μ½λ : ν μ€νΈ νλ μμν¬(JUnit, TestNG λ±)λ₯Ό μ¬μ©νμ¬ ν μ€νΈλ₯Ό μμ±ν λ, νΉμ μ‘°κ±΄μ΄ κΈ°λν λλ‘ λμνλμ§ νμΈν©λλ€.
μ£Όμ μ¬ν
- νλ‘λμ μ½λμμμ μ¬μ© : μ΄μμ μ μ£Όλ‘ κ°λ° λ° ν μ€νΈ νκ²½μμ μ¬μ©λλ©°, νλ‘λμ νκ²½μμλ λΉνμ±νλλ κ²½μ°κ° λ§μ΅λλ€. νλ‘λμ νκ²½μμ 쑰건 κ²μ¦μ΄ νμν κ²½μ°μλ μμΈ μ²λ¦¬λ₯Ό μ¬μ©ν©λλ€.
- λΆμμ© μλ μ½λ : μ΄μμ λ΄λΆμμλ λΆμμ©μ΄ μλ μ½λλ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€. μ΄μμ μ μνλ₯Ό λ³κ²½νμ§ μκ³ μ‘°κ±΄λ§ κ²μ¦ν΄μΌ ν©λλ€.
μμ½.
- μ΄μμ
μ μ½λμ νΉμ μ‘°κ±΄μ΄ μ°Έμμ κ²μ¦νλ λꡬλ‘, λλ²κΉ
κ³Ό ν
μ€νΈ κ³Όμ μμ μ½λμ λ
Όλ¦¬μ μΌκ΄μ±μ μ μ§νλλ° μ€μν μν μ ν©λλ€.
- μ΄λ₯Ό ν΅ν΄ κ°λ°μλ μ½λμ κ°μ κ³Ό μ€μ λμμ΄ μΌμΉνλμ§ νμΈνκ³ , λ¬Έμ λ₯Ό μ‘°κΈ°μ λ°κ²¬νμ¬ μμ ν μ μμ΅λλ€.