π Chapter 3: λꡬ μκ°
π κ°λ΅ν JUnit 4 μκ°β
- μλ° ν μ€νΈ νλ μμν¬λ‘ JUnit 4λ₯Ό μ¬μ©νλ€.
- JUnitμ 리νλ μ μ ν΅ν΄ ν΄λμ€ κ΅¬μ‘°λ₯Ό νμ ν ν ν΄λΉ ν΄λμ€ λ΄μμ ν μ€νΈλ₯Ό λνλ΄λ κ²μ λͺ¨λ μ€ννλ€.
- μ΄λ₯Ό ν
λ©΄, λ€μμ
Entry
κ°μ²΄μ 컬λ μ μ κ΄λ¦¬νλCatalog
ν΄λμ€λ₯Ό μννλ ν μ€νΈλ€.
public class CatalogTest {
private final Catalog catalog = new Catalog();
@Test public void containsAnAddedEntry() {
Entry entry = new Entry("fish", "chips");
catalog.add(entry);
assertTrue(catalog.contains(entry));
}
@Test public void indexesEntriesByName() {
Entry entry = new Entry("fish", "chips");
catalog.add(entry);
assertEquals(entry, catalog.entryFor("fish"));
assertNull(catalog.entryFor("missing name"));
}
}
π ν μ€νΈ μΌμ΄μ€β
- JUnitμμλ
@Test
λΌλ μ λ Έν μ΄μ μ΄ μ§μ λ λ©μλλ λͺ¨λ ν μ€νΈ μΌμ΄μ€λ‘ μ·¨κΈνλ€. ν μ€νΈ λ©μλλ κ°μ λ°ννκ±°λ 맀κ°λ³μλ₯Ό λ°μμλ μ λλ€. μ μμ μ κ²½μ°CatalogTest
ν΄λμ€μλcontainsAnAddedEntry
,indexesEntriesByName
μ΄λΌλ ν μ€νΈ λ κ°κ° μ μλΌ μλ€. - JUnitμμλ ν μ€νΈλ₯Ό μ€ννκΈ° μν΄ ν μ€νΈ ν΄λμ€μ μ μΈμ€ν΄μ€λ₯Ό μμ±ν ν μ μ ν ν μ€νΈ λ©μλλ₯Ό νΈμΆνλ€.
π λ¨μ β
- JUnit ν μ€νΈμμλ ν μ€νΈ λμ κ°μ²΄λ₯Ό νΈμΆνκ³ κ·Έ κ²°κ³Όλ₯Ό λ¨μ (assertion)νλλ°, λ³΄ν΅ JUnitμ μ μλΌ μλ λ¨μ λ©μλλ₯Ό μ¬μ©νλ©°, μ΄λ¬ν λ©μλλ λ¨μ μ΄ μ€ν¨ν λ μ μ©ν μ€λ₯ λ©μμ§λ₯Ό λ§λ€μ΄λΈλ€.
- μλ₯Ό λ€μ΄,
CatalogTest
μμλ JUnitμ μΈ κ°μ§ λ¨μ λ©μλλ₯Ό μ¬μ©νλλ°,assertTrue
λ ννμμ΄ μ°Έμμ λ¨μ νκ³assertNull
μ κ°μ²΄ μ°Έμ‘°κ°null
μμ λ¨μ νλ©°,assertEquals
λ λ κ°μ΄ λμΌν¨μ λ¨μ νλ€. λ§μ½ μ€ν¨νλ©΄ μμ κ°κ³Ό μ€μ κ°μ λΉκ΅ν λ΄μ©μ 보μ¬μ€λ€.
π μμΈ μμνκΈ°β
@Test
μ λ Έν μ΄μ μ μ νμ μΈ λ§€κ°λ³μλ‘expected
λΌλ κ²μ μ§μνλ€. μ΄ λ§€κ°λ³μλ ν μ€νΈ μΌμ΄μ€μμ μμΈλ₯Ό λμ§ κ²μΌλ‘ μ μΈνλ€. ν μ€νΈμμ μμΈλ₯Ό λμ§μ§ μκ±°λ λ€λ₯Έ μ νμ μμΈλ₯Ό λμ§λ©΄ ν μ€νΈκ° μ€ν¨νλ€.- μλ₯Ό λ€μ΄, λ€μ ν
μ€νΈμμλ
Catalog
μμ λ νλͺ©μ΄ κ°μ μ΄λ¦μΌλ‘ μΆκ°λ κ²½μ°IllegalArgumentException
μ λμ§λμ§ κ²μ¬νλ€.
@Test(expected=IllegalArgumentException)
public void cannotAddTwoEntriesWithTheSameName() {
catalog.add(new Entry("fish", "chips"));
catalog.add(new Entry("fish", "peas"));
}
π ν μ€νΈ ν½μ€μ²β
- ν μ€νΈ ν½μ€μ²(test fixture)λ ν μ€νΈλ₯Ό μμν λ μ‘΄μ¬νλ κ³ μ λ μνλ₯Ό μλ―Ένλ€. ν μ€νΈ ν½μ€μ²λ ν μ€νΈκ° λ°λ³΅ κ°λ₯ν¨μ 보μ₯νλ€. μ¦, ν μ€νΈκ° μ€νλ λλ§λ€ ν΄λΉ ν μ€νΈλ λμΌν μνλ‘ μμνλ―λ‘ λμΌν κ²°κ³Όλ₯Ό λΌ κ²μ΄λ€.
- ν½μ€μ²λ ν μ€νΈκ° μ€νλκΈ° μ μ μ€λΉν΄μ ν μ€νΈ μ€νμ΄ μλ£λ νμ μ 리ν μ μλ€.
- JUnit ν
μ€νΈμμ μ¬μ©λλ ν½μ€μ²λ ν΄λΉ ν
μ€νΈλ₯Ό μ μν ν΄λμ€μμ κ΄λ¦¬νκ³ κ°μ²΄μ νλμ μ μ₯λλ€. κ°μ ν΄λμ€μ μ μλ ν
μ€νΈλ λͺ¨λ λμΌν ν½μ€μ²λ₯Ό κ°μ§κ³ μμνλ©°, μ€νλ λ ν΄λΉ ν½μ€μ²λ₯Ό λ³κ²½ν΄λ λλ€.
CatalogTest
μμ ν½μ€μ²λcatalog
νλμ μ μ₯λ λΉCatalog
κ°μ²΄λ€. - JUnitμμλ μ λ
Έν
μ΄μ
μΌλ‘ ν½μ€μ²λ₯Ό μ€λΉνκ±°λ μ 리νλ λ©μλλ₯Ό ꡬλΆν μλ μλ€. ν
μ€νΈλ₯Ό μ€ννκΈ° μ μ
@Before
μ λ Έν μ΄μ μ΄ μ§μ λ λ©μλλ₯Ό λͺ¨λ μ€ννκ³ , ν½μ€μ²λ₯Ό μ 리νκΈ° μν΄ ν μ€νΈκ° μ€νλ ν@After
λΌλ μ λ Έν μ΄μ μ΄ μ§μ λ λ©μλλ₯Ό μ€ννλ€. - λ§μ JUnit ν μ€νΈμμ λͺ μμ μΌλ‘ ν½μ€μ²λ₯Ό μ 리νμ§ μμλ λλλ°, ν½μ€μ²λ₯Ό μ€λΉν λ JVM κ°λΉμ§ 컬λ μ μΌλ‘ μμ±λ κ°μ²΄λ₯Ό μκ±°νλ κ²λ§μΌλ‘λ μΆ©λΆνκΈ° λλ¬Έμ΄λ€.
- λ€μ μμ²λΌ ν
μ€νΈμμ λͺ¨λ λμΌν νλͺ©μΌλ‘
catalog
λ₯Ό μ΄κΈ°νν μ μλ€.
public class CatalogTest {
final Catalog catalog = new Catalog();
final Entry entry = new Entry("fish", "chips");
@Before public void fillTheCatalog() {
catalog.add(entry);
}
// ...
}