U E D R , A S I H C RSS

JUnit/Ecliipse


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 : λŠ” μ΄ν΄λ¦½μŠ€κ°€ μ„μΉ˜λœ ν΄λ”λ‚΄μ—μ„œ μ•„λž˜μ™€ 같은 νŒŒμΌμ„ μ°Ύμ•„ ν΄λ¦­ν•˜λ©΄ λ©λ‹ˆλ‹€.

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) )λΌ λͺ¨λ‘ μ²΄ν¬ν•©λ‹ˆλ‹€.

μ•„λž˜μ™€ 같은 μƒˆ ν΄λž˜μŠ€κ°€ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

~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)

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 의 λ°œμƒν•©λ‹ˆλ‹€.

첫번째 μ—λŸ¬λΌ μˆ˜μ •ν•˜κΈ° μœ„ν•΄μ„œ

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));
	}

λ‹€μ‹œ 싀행을 ν•˜μ‹œλ©΄, μ™Όμͺ½μ˜ μƒνƒœλ°”κ°€ λ…Ήμƒ‰μœΌλ‘œ λ‚˜νƒ€λ‚˜λŠ” 것을 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
각각의 λ©”μ„œλ“œλΌ λ…λ¦½μ μœΌλ‘œ ν…ŒμŠ€νŠΈν•˜κΈ° λ•Œλ¬Έμ— μΌμ–΄λ‚˜λŠ” μ—λŸ¬λΌ ν™•μΈν•  수 μžˆλŠ” 뢀뢄이 λ˜κ² μ§€μš”.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:29
Processing time 0.0205 sec