一、簡(jiǎn)介(Introduction)
看到這兒你應(yīng)該已經(jīng)知道為什么測(cè)試如此重要了。如果還沒(méi)有的話,請(qǐng)先閱讀這個(gè)分為五個(gè)部分的系列論文中的第一篇。第一篇是為什么測(cè)試有益于企業(yè)級(jí)軟件的概念性介紹,F(xiàn)在絕大多數(shù)的軟件是分層實(shí)現(xiàn)的:表示層、邏輯層(業(yè)務(wù)邏輯在這兒)和數(shù)據(jù)層。邏輯層是程序的重點(diǎn),它包括程序所有的規(guī)則和行為。人們經(jīng)常認(rèn)為測(cè)試是試用一個(gè)產(chǎn)品。對(duì)汽車來(lái)說(shuō)這非常容易:打火、發(fā)動(dòng)。對(duì)桌面應(yīng)用也很容易:?jiǎn)?dòng)程序,四處點(diǎn)點(diǎn)鼠標(biāo)、敲敲鍵盤,可以測(cè)試你要測(cè)的功能。但是,你怎么測(cè)試一個(gè)由很多Java class組成的Jar文件呢?
二、測(cè)試Java類(Testing Java Classes)
當(dāng)然,本質(zhì)上說(shuō)也可以算是啟動(dòng)Java類,然后點(diǎn)擊按鈕。測(cè)試一個(gè)Java類的途徑是在另一個(gè)Java類中調(diào)用這個(gè)類的方法。下面的例子是一個(gè)Java源文件。把程序列表1的內(nèi)容存為FactorCalculator.java。
程序列表1 (FactorCalculator.java, taken from FactorCalculator.java.v1):
	import java.util.List;
	import java.util.ArrayList;
	public class FactorCalculator {
	  public int[] factor(int number) {
	    List factorList = new ArrayList();
	    while(isDivisor(number, 2)) {
	      factorList.add(new Integer(2));
	      number /= 2;
	    }
	    int upperBound = (int)Math.sqrt(number) + 1;
	    for(int i = 3; i <= upperBound; i += 2) {
	      while(isDivisor(number, i)) {
	        factorList.add(new Integer(i));
	        number /= i;
	      }
	    }
	    if (number != 1) {
	      factorList.add(new Integer(number));
	      number = 1;
	    }
	    int[] intArray = new int[factorList.size()];
	    for(int i = 0; i < factorList.size(); i++) {
	      intArray[i] = ((Integer)factorList.get(i)).intValue();
	    }
	    return intArray;
	  }
	  public boolean isPrime(int number) {
	    boolean isPrime = true;
	    int upperBound = (int)Math.sqrt(number) + 1;
	    if (number == 2) {
	      isPrime = true;
	    } else if (isDivisor(number, 2)) {
	      isPrime = false;
	    } else {
	      for(int i = 3; i <= upperBound; i += 2) {
	        if (isDivisor(number, i)) {
	          isPrime = false;
	          break;
	        }
	      }
	    }
	    return isPrime;
	  }
	  public boolean isDivisor(int compositeNumber, int potentialDivisor) {
	    return (compositeNumber % potentialDivisor == 0);
	  }
	}