Item 39. Annotation
λͺ λͺ ν¨ν΄λ³΄λ€ μ λν μ΄μ μ μ¬μ©νλΌ.
μμ μ λͺ
λͺ
ν¨ν΄μ μ¬μ©ν΄ νλ‘κ·Έλ¨ μμμ μ 보λ₯Ό νμνλ€. νμ§λ§ λͺ
λͺ
ν¨ν΄μ νλ‘κ·Έλ¨ μμλ₯Ό λ§€μ° λΆνΈνκ² λ§λ λ€.
μλ₯Όλ€μ΄ μ΄μ μ Junitμ ν
μ€νΈ λ©μλλ₯Ό testλ‘ μμνλ μ΄λ¦μΌλ‘ μ§μ΄μΌ ν
μ€νΈλ₯Ό μ€ννκΈ° λλ¬Έμ, μ€νλ μλνμ§ μμ λ©μλκ° ν
μ€νΈ λμμ΄ λλ κ²½μ°κ° λ§μλ€.
μ λν
μ΄μ
λ°©λ²μΌλ‘ λͺ
λͺ
ν¨ν΄μ μμ ν λ체ν μ μκΈ° λλ¬Έμ λͺ
λͺ
ν¨ν΄μ μ¬μ©νμ§ λ§κ³ μ λν
μ΄μ
μ μ¬μ©νλ κ²μ΄ μ’λ€.
Annotation
μ λν μ΄μ μ ν΄λμ€, λ©μλ, νλ λ±μ νλ‘κ·Έλ¨ μμμ λΆκ° μ 보λ₯Ό λ§λΆμ΄λ λ°©λ²μ΄λ€. μ΄ λ°©λ²μ μ¬μ©νλ©΄ μμ λͺ λͺ ν¨ν΄μ λ¨μ μ λͺ¨λ ν΄κ²°νλ©΄μ κ°κ²°νκ³ λͺ ννκ² νλ‘κ·Έλ¨ μμμ μλ―Έλ₯Ό μ λ¬ν μ μλ€.
λ§μ»€ μ λν
μ΄μ
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Test {
}@Test μ λν
μ΄μ
μ μ΄ν΄λ³΄λ©΄ @interfaceλΌλ ν€μλλ‘ μ μΈλμ΄ μκ³ , @Retentionκ³Ό @Targetμ΄λΌλ μ λν
μ΄μ
μ κ°μ§κ³ μλ€.
μ΄μ κ°μ΄ μ λν
μ΄μ
μ μΈμ λ€λ μ λν
μ΄μ
μ λ©ν μ λν
μ΄μ
(meta-annotation)μ΄λΌκ³ νλ€.
@Retention: ν΄λΉ μ λν μ΄μ μ μΈμ κΉμ§ μ μ§ν κ²μΈμ§λ₯Ό μ§μ , μ¬κΈ°μλRetentionPolicy.RUNTIMEμΌλ‘ μ§μ λμ΄ μμ΄@Testκ° λ°νμμλ μ μ§λμ΄μΌ νλ€λ κ²μ μλ―Έν¨@Target: ν΄λΉ μ λν μ΄μ μ μ΄λμ μ¬μ©ν μ μλμ§λ₯Ό μ§μ , μ¬κΈ°μλElementType.METHODλ‘ μ§μ λμ΄ μμ΄@Testκ° λ©μλ μ μΈμλ§ μ¬μ©ν μ μμ
μ΄λ κ² μμ±λ @Test μ λν
μ΄μ
μ λ€μκ³Ό κ°μ΄ μ¬μ©νλλ°, μ΄μ²λΌ λ§€κ°λ³μ μμ΄ μ¬μ©ν μ μλ μ λν
μ΄μ
μ λ§μ»€(marker) μ λν
μ΄μ
μ΄λΌκ³ νλ€.
class Sample {
@Test
public static void m1() {
// Test m1
}
}μ λν μ΄μ μ λ§ κ·Έλλ‘ λΆκ° μ 보λ₯Ό λ§λΆμ΄λ κ²μ΄κΈ° λλ¬Έμ, ν΄λΉ μμμ μ§μ μ μΈ μν₯μ μ£Όμ§ μκ³ , μ΄ μ λν μ΄μ μ μ²λ¦¬ν νλ‘κ·Έλ¨μκ² μΆκ° μ 보λ₯Ό μ 곡νλ κ²μ΄ μ λΆμ΄λ€. μ΄λ¬ν λ§μ»€ μ λν μ΄μ μ μ²λ¦¬νλ μ½λ μμλ λ€μκ³Ό κ°λ€.
λ§€κ°λ³μλ₯Ό λ°λ μ λν
μ΄μ
μ λν μ΄μ μλ λ§€κ°λ³μλ₯Ό λ°μ μ μν μ μλλ°, μ΄λ₯Ό μ¬μ©ν μμλ λ€μκ³Ό κ°λ€.
@ExceptionTest μ λν
μ΄μ
μ @Test μ λν
μ΄μ
κ³Ό λΉμ·νμ§λ§, valueλΌλ λ§€κ°λ³μλ₯Ό λ°μμ ν
μ€νΈ λ©μλκ° νΉμ ν μμΈλ₯Ό λμ ΈμΌλ§ μ±κ³΅νλ ν
μ€νΈμμ λͺ
μνλ€.
ν΄λΉ μ λν μ΄μ μ μ²λ¦¬νλ μ½λλ λ€μκ³Ό κ°λ€.
@Repeatable
Java 8λΆν°λ μ λν
μ΄μ
μ λ°λ³΅ν΄μ μ μ©νμ¬ μ¬λ¬ κ°μ κ°μ λ°λ λ°©λ²μ μ 곡νλ€.
κΈ°μ‘΄ μ λν
μ΄μ
μ μμ @Repeatableμ μΆκ°νκ³ , μ λν
μ΄μ
μ λ΄μ 컨ν
μ΄λ μ λν
μ΄μ
μ μ μνλ©΄ λλ€.
μ΄λ κ² μ μλ μ λν
μ΄μ
μ μ¬μ©νκΈ° μν΄μ λ¨μν μ¬λ¬ κ°μ @ExceptionTest μ λν
μ΄μ
μ μ μ©νλ©΄ λλ€.
μΆκ°μ μΌλ‘ μ λν μ΄μ μ μ²λ¦¬νλ μ½λλ νλλ§ λ¬μμ λμ μ¬λ¬ κ°λ₯Ό λ¬μμ λλ₯Ό ꡬλΆνμ¬ μ²λ¦¬ν΄μΌ νλ€.
Last updated
Was this helpful?