1. Eclipse μμμ JUnit μ€μΉ ¶
Eclipse μμλ κΈ°λ³Έμ μΌλ‘ JUnitμ λ΄μ₯νκ³ μμ΅λλ€. (μ°Έκ³ λ‘ μ λ Eclipse 3.0 M9 λ²μ μ μ¬μ©νμμ΅λλ€.)
λ°λΌμ λ³λμ λ€μ΄λ‘λ λ° μΈμ€ν¨ κ³Όμ μμ΄ λ³΄λ€ νΈνκ² JUnitμ μ¬μ©ν μ μλ κ°μ μ΄ μμΌλ©°, μ€μ λ‘ λ§μ°μ€μ ν΄λ¦ λͺλ²μΌλ‘ λλΆλΆμ ν΄λμ€ λ° λ©μλλ₯Ό μμ±ν΄ μ£Όλ κ°λ ₯ν κΈ°λ₯μ μ§μν©λλ€.
O'REILLY μ¬μ Eclipse(μ μ Steve Holzner) λ₯Ό ꡬμ
νμκ±°λ μ λ³Ένμ λΆλ€κ»μλ CHAPTER 3. Testing and Debugging μ 보μλ©΄ Sample μμ μ ν¨κ» μμΈν μ€λͺ
μ΄ μμμ μλ €λ립λλ€.
λ¨Όμ Eclipse μμ JUnit μ μ¬μ©νκΈ° μν μΈν
λ²μ
λλ€.
Eclipse νλ«νΌμ μ€ννμκ³ , Window->Preference λ©λ΄λ₯Ό μ ννμλ©΄ Preferences λνμ°½μ΄ μ΄λ¦½λλ€. μΌμͺ½μ νΈλ¦¬κ΅¬μ‘°λ₯Ό 보μλ©΄ Java λΌλ λ
Έλκ° μκ³ , νμ λ
Έλλ‘ Build Path μ 보μλ©΄ Classpath Varialbles κ° μμ΅λλ€.
μκΈ°μ New λλ₯΄μκ³ ..
Name : μ JUNIT μΌλ‘..
Path : λ μ΄ν΄λ¦½μ€κ° μ€μΉλ ν΄λλ΄μμ μλμ κ°μ νμΌμ μ°Ύμ ν΄λ¦νλ©΄ λ©λλ€.
μκΈ°μ New λλ₯΄μκ³ ..
Name : μ JUNIT μΌλ‘..
Path : λ μ΄ν΄λ¦½μ€κ° μ€μΉλ ν΄λλ΄μμ μλμ κ°μ νμΌμ μ°Ύμ ν΄λ¦νλ©΄ λ©λλ€.
clipse/plugins/org.junit_3.8.1/junit.jar
μ΄κ²μΌλ‘ Junitμ μ¬μ©νκΈ° μν μ€λΉλ λμ
λλ€.
2. Sample Example ¶
Example 3-1. The Ch03_01.java
~cpp package org.eclipsebook.ch03; public class Ch03_01 { private int[] array; public int[] allocate() { array[0] = 0; array[1] = 1; array[2] = 2; return array; } public int get(int index) { return array[index]; } public boolean set(int index, int value) { if(index < array.length && index >= 0) { array[index] = value; return true; } else { return false; } } }μμ μν ν΄λμ€λ₯Ό JUnitμ ν΅νμ¬ ν μ€νΈ ν΄λ³΄λλ‘ νκ² μ΅λλ€.
μ΄ν΄λ¦½μ€μ Workspace μ€ Pakage Expolorer λ₯Ό 보μλ©΄ Ch03_01.java νμΌμ΄ μμ΅λλ€. μ¬κΈ°μ λ§μ°μ€ μ€λ₯Έμͺ½ λ²νΌμ ν΄λ¦ -> NEW -> JUnit Test Case λ₯Ό μ νν©λλ€.
New λνμ°½μ΄ λ¨λ©΄ μλμͺ½μ setUP()κ³Ό tearDown()μ 체ν¬νκ³ Nextλ₯Ό λλ¦
λλ€.
λ€μμΌλ‘ μμ μ΄ ν
μ€νΈλ₯Ό νκ³ μΆμ λ©μλμ 체ν¬λ₯Ό νκ³ Finish νλ©΄ TestCaseλ₯Ό μμλ°λ μ ν΄λμ€λ₯Ό μλμΌλ‘ μμ±νμ¬ μ€λλ€.
μ¬κΈ°μλ μνμμ€μ λ©μλ 3κ°( allocate(), get(int), set(int,int) )λ₯Ό λͺ¨λ 체ν¬ν©λλ€.
μ¬κΈ°μλ μνμμ€μ λ©μλ 3κ°( allocate(), get(int), set(int,int) )λ₯Ό λͺ¨λ 체ν¬ν©λλ€.
μλμ κ°μ μ ν΄λμ€κ° μμ±λμμ΅λλ€.
~cpp public class Ch03_01Test extends TestCase { /* * @see TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); } /* * @see TestCase#tearDown() */ protected void tearDown() throws Exception { super.tearDown(); } public void testAllocate() { } public void testGet() { } public void testSet() { } }
μ΄μ μμ μ΄ ν
μ€νΈλ₯Ό νκ³ μΆμ λ©μλμ μνλ μ½λλ₯Ό μΆκ°νλ©΄ λ©λλ€.
ν
μ€νΈλ₯Ό νκΈ°μν΄ μ¬μ©λλ λ©μλμ 리μ€νΈλ μλμ κ°μ΅λλ€.
1. assertEquals(a,b)
2. assertFalse(a)
3. assertNotNull(a)
4. assertNotSame(a,b)
5. assertNull(a)
6. assertSame(a,b)
7. assertTrue(a)
2. assertFalse(a)
3. assertNotNull(a)
4. assertNotSame(a,b)
5. assertNull(a)
6. assertSame(a,b)
7. assertTrue(a)
Java Beans νμμΌλ‘ λμ΄μμΌλ―λ‘ λ©μλμ λν μ€λͺ
μ νμ§ μμ΅λλ€.
μ΄μ μλμ κ°μ΄ μ½λλ₯Ό μμ ν©λλ€.
~cpp public class Ch03_01Test extends TestCase { Ch03_01 testObject; /* * @see TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); testObject = new Ch03_01(); } /* * @see TestCase#tearDown() */ protected void tearDown() throws Exception { super.tearDown(); } public void testAllocate() { assertNotNull(testObject.allocate()); } public void testGet() { assertEquals(testObject.get(1),1); } public void testSet() { assertTrue(testObject.set(2,3)); } }ν μ€ν μ μνλ μ½λλ₯Ό μΆκ°νμΌλ―λ‘, Urs As -> JUnit Test λ©λ΄λ₯Ό ν΄λ¦νμ¬ μ€νν©λλ€.
μΌμͺ½μ Workspace μ λΆμμ μνλ°κ° λνλλ©° 3κ°μ Errorκ° λ°μν©λλ€.
Error μ λ°μν©λλ€.
Error μ λ°μν©λλ€.
첫λ²μ§Έ μλ¬λ₯Ό μμ νκΈ° μν΄μ
Ch03_01 ν΄λμ€μ allocate() λ©μλλ₯Ό λ€μκ³Ό κ°μ΄ μμ ν©λλ€.
~cpp public int[] allocate() { array = new int[3]; array[0] = 0; array[1] = 1; array[2] = 2; return array; }λ€μ Runμ νλ©΄ Errorκ° λκ°λ‘ μ€μμμ μ μ μμ΅λλ€.
λλ¨Έμ§ λκ°μ Errorλ JUnitμ΄ λͺ¨λ ν
μ€νΈλ₯Ό λ
립μ μΌλ‘ μ€ννκΈ° λλ¬Έμ λ°μνλ κ² μ
λλ€.
κ²°κ΅ λ©μλ λ¨μλ‘ λ
립μ μ΄λΌκ³ μκ°νμλ©΄ λκ² μ΅λλ€.
λ°λΌμ, μλμ κ°μ΄ ν μ€νΈ μ½λλ₯Ό μμ νμκ³ ,
λ°λΌμ, μλμ κ°μ΄ ν μ€νΈ μ½λλ₯Ό μμ νμκ³ ,
~cpp public void testGet() { testObject.allocate(); assertEquals(testObject.get(1),1); } public void testSet() { testObject.allocate(); assertTrue(testObject.set(2,3)); }
λ€μ μ€νμ νμλ©΄, μΌμͺ½μ μνλ°κ° λ
ΉμμΌλ‘ λνλλ κ²μ νμΈ ν μ μμ΅λλ€.
κ°κ°μ λ©μλλ₯Ό λ 립μ μΌλ‘ ν μ€νΈνκΈ° λλ¬Έμ μΌμ΄λλ μλ¬λ₯Ό νμΈν μ μλ λΆλΆμ΄ λκ² μ§μ.
κ°κ°μ λ©μλλ₯Ό λ 립μ μΌλ‘ ν μ€νΈνκΈ° λλ¬Έμ μΌμ΄λλ μλ¬λ₯Ό νμΈν μ μλ λΆλΆμ΄ λκ² μ§μ.