JUnit
(¥v«Òªâ, idealist@gcn.net.tw, 2003/12/05)
¡@¡@JUnit¬O³æ¤¸´ú¸Õªºframework¡A¥ÑEric Gamma¤ÎKent Beck©Ò¼g¡A
¦bhttp://www.junit.org¥i¥H¤U¸ü¡A
¦b³o¸Ì§Ú±N·|¨Ï¥ÎWSAD (Websphere Studio Application Developer)¼g¤@ӫܤpªº½d¨Ò¡A
¦]¬°WSAD 5.1´N¦³¾ã¦XJUnit¤F¡A¬Ù«o¤F§Ṳ́U¸ü¦w¸Ëªº³Â·Ð¡C
¡@¡@°²³]§Ú̱N¬°¦p¹Ï1ªº¤@Ó±M®×¼g´ú¸Õµ{¦¡¡A³oÓ±M®×ªºµ{¦¡¬Û·í²³æ¥u¦³¨âÓclass¡A¥B¤£½×³oÓ¨Ò¤l
¬O§_¦³³Ð·N¡A¥un¥¦¯à»¡©úJUnit´N¦n¤F¡C

¹Ï1
¡@¡@¥ý¨Ó¬Ý¤@¤U§ÚÌn´ú¸ÕªºGarbage.java©MMoney.javaªº¤º®e¡K
Garbage.java
package tw.idv.idealist.program;
import java.util.*;
public class Garbage {
¡@Map map;
¡@public Garbage() {
¡@¡@map = new HashMap();
¡@¡@map.put(new Integer(0), "¥Á¶iÄÒ");
¡@¡@map.put(new Integer(1), "°ê¥ÁÄÒ");
¡@¡@map.put(new Integer(2), "·s¥ÁÄÒ");
¡@}
¡@public String getItem(int index) {
¡@¡@return (String) map.get(new Integer(index));
¡@}
¡@public void addItem(String item) {
¡@¡@int size = map.size();
¡@¡@map.put(new Integer(size), item);
¡@}
¡@public int getSize() {
¡@¡@return map.size();
¡@}
}
Money.java
package tw.idv.idealist.program;
import java.util.*;
public class Money {
¡@Map map;
¡@public Money() {
¡@¡@map = new HashMap();
¡@¡@map.put(new Integer(0), "¬FªvÄmª÷");
¡@¡@map.put(new Integer(1), "¥]¤uµ{");
}
¡@public String getItem(int index) {
¡@¡@return (String) map.get(new Integer(index));
¡@}
¡@public void addItem(String item) {
¡@¡@int size = map.size();
¡@¡@map.put(new Integer(size), item);
¡@}
¡@public int getSize() {
¡@¡@return map.size();
¡@}
}
- ³]©wclasspath
¡@¡@ÂI¿ïWSAD³»ºÝ[µøµ¡¡þ³ß¦n³]©w]¡A§ä¨ì[Java¡þÃþ§O¸ô®|ÅܼÆ]¡AClick[·s«Ø]¡A¦p¹Ï2©Ò¥Ü¡A¦b¦WºÙ³B¥´¤J"JUnit"¡A
¸ô®|³B¿ï¾Ü"C:/Program Files/IBM/WebSphere Studio/Application Developer/v5.1/eclipse/plugins/org.junit_3.8.1/junit.jar"¡AµM«á
«ö½T©w¡C

¹Ï2
¡@¡@±µµÛ¦b¥ªÃä±M®×¦WºÙ¤W«ö¥kÁä¡A¿ï¾Ü[¤º®e]¡A§ä¨ì[Java«Ø¸m¸ô®|¡þµ{¦¡®w]¡AClick[·s¼WÅܼÆ]±N·|¬Ý¨ì¦p¹Ï3¡A
¿ï¾ÜJUnit«á«ö½T©w¡C

¹Ï3
- «Ø¥ßTestCase
¡@¡@«Ø¸m¤@Ó®M¥ó¡A¦WºÙ¬°"tw.idv.idealist.test"¡A§Ú̱N§â´ú¸Õµ{¦¡³£©ñ¦b³o¸Ì¡C¦b®M¥ó¦WºÙ¤W«ö¥kÁä¡A¿ï¾Ü[·s«Ø¡þ¨ä¥¦]¡A
¿ï¾Ü¦p¹Ï4«á«ö¤U¤@¨B¡AµM«áÂI¿ï´ú¸ÕÃþ§O®ÇÃ䪺[Âsø°]¡A¿ï¾ÜGarbage«á¡A¥i¥H¬Ý¨ì¦p¹Ï5¡C

¹Ï4

¹Ï5
¡@¡@¦btw.idv.idealist.test¤¤§Ú̱N¥i¥Hµo²{WSAD¬°§ÚÌ·s«Ø¤F¤@ÓGarbageTest.java¡A¸Ì±ªº¤º®e¦p¹Ï6¡A¨ä¤¤
setUp¬O¥Î¨Ó°µªì©l¤Æ¤u§@ªº¦a¤è¡A¦bGarbageTest¶}©l´ú¸Õ«e¡A·|¥ý³Q°õ¦æ¡AtearDown«h¬O¦b´ú¸Õ§¹«á·|³Q°õ
¦æ¡A¥i¥H¥Î¨ÓÄÀ©ñ¸ê·½¡C

¹Ï6
¡@¡@±µ¤U¨Ó§Ú̦bGarbageTest¸Ì¥[¤J§ÚÌn´úªºµ{¦¡¡A§ÚÌ¥i¥H«Ø¥ßµL¼ÆÓmethod¡A¥un¨CÓmethodªº¦WºÙ¬°
testXXX¡AJUnit´N·|À°§ÚÌ´ú¸Õ¡A¥[¤J´ú¸Õµ{¦¡½X«á¦p¤U¡K
package tw.idv.idealist.test;
import junit.framework.TestCase;
import java.util.*;
import tw.idv.idealist.program.*;
public class GarbageTest extends TestCase {
¡@private Garbage garbage;
¡@public GarbageTest(String arg0) {
¡@¡@super(arg0);
¡@}
¡@public static void main(String[] args) {
¡@¡@junit.textui.TestRunner.run(GarbageTest.class);
¡@}
¡@protected void setUp() throws Exception {
¡@¡@super.setUp();
¡@¡@garbage = new Garbage();
¡@}
¡@protected void tearDown() throws Exception {
¡@¡@super.tearDown();
¡@}
¡@public void testAddItem() {
¡@¡@garbage.addItem("¥xÁp");
¡@¡@garbage.addItem("·sÄÒ");
¡@¡@assertEquals(5, garbage.getSize());
¡@}
¡@public void testGetSize() {
¡@¡@assertEquals(3, garbage.getSize());
¡@}
¡@public void testGetItem() {
¡@¡@assertEquals("¿Ë¥ÁÄÒ", garbage.getItem(2));
¡@}
}
¡@¡@´ú¸Õµ{¦¡¦Ü¦¹¤w¸g§¹¦¨¡A«ö¤W±menu¤@Ó¥¿¦b¶]ªº¤H¸Ìªº[°õ¦æ¬°¡þJUnit´ú¸Õ]¡Aµ²ªG¦p¹Ï¢¶©Ò¥Ü¡C

¹Ï¢¶
¡@¡@§Ú̵o²{GetItem®É¦³¿ù¡AÀˬd±oª¾¬O"¿Ë¥ÁÄÒ"»~¥´¬°"·s¥ÁÄÒ"¤F¡A§ó¥¿«á¦A´ú¤@¹M¡Aµ²ªG¦p¹Ï¢·¡C

¹Ï¢·
- «Ø¥ßTestSuite
¡@¡@¬°¤FÅýµ{¦¡´ú¸Õ§ó§¹¾ã¡A·íµMn¦A¬°Money«Ø¥ß¤@ÓTestCase¡A«Ø¥ßªº¹Lµ{½Ð°Ñ¦Ò¤W±©Òz¡A¥ÑŪªÌ¦Û¦æ§¹¦¨¡C
«Ø¥ß¦n¤§«á§ÚÌ·|µo²{¡A¨C¦¸µ{¦¡¦³§ó§ï¡A¦pªG§ÚÌn°õ¦æ©Ò¦³´ú¸Õ¬Û·í³Â·Ð¡AJUnit¶K¤ßªºÀ°§ÚÌTestSuite¨Ó
¥]ùةҦ³ªº´ú¸Õ¡AÅý§ÚÌ¥i¥H¤@¦¸±N©Ò¦³´ú¸Õ°õ¦æ§¹¡C

¹Ï¢¸

¹Ï¢°¢¯
¡@¡@²{¦b¸òµÛ§Ú°µ¡AÂI¿ï¹Ï¢¸ªºTestSuiteµM«á«ö¤U¤@¨B¡A«öµÛ¦p¹Ï¢°¢¯«Ø¥ß¤@ÓTestSuite«ö§¹¦¨¡A¦¹®ÉWSAD´N·|À°
§Ú̫إߤ@Ó¥sAllTests.java¡A¤º®e¦p¤U¡A¦A«ö°õ¦æ¬°JUnit´ú¸Õ¡A´N¥i¥Hµo²{¨âÓTestCase³£¦³°õ¦æ¤F¡C
package tw.idv.idealist.test;
import junit.framework.Test;
import junit.framework.TestSuite;
public class AllTests {
¡@public static void main(String[] args) {
¡@¡@junit.textui.TestRunner.run(AllTests.class);
¡@}
¡@public static Test suite() {
¡@¡@TestSuite suite = new TestSuite("Test for tw.idv.idealist.test");
¡@¡@//$JUnit-BEGIN$
¡@¡@suite.addTest(new TestSuite(GarbageTest.class));
¡@¡@suite.addTest(new TestSuite(MoneyTest.class));
¡@¡@//$JUnit-END$
¡@¡@return suite;
¡@}
}