一、簡介(Introduction)
看到這兒你應(yīng)該已經(jīng)知道為什么測試如此重要了。如果還沒有的話,請先閱讀這個分為五個部分的系列論文中的第一篇。第一篇是為什么測試有益于企業(yè)級軟件的概念性介紹。現(xiàn)在絕大多數(shù)的軟件是分層實現(xiàn)的:表示層、邏輯層(業(yè)務(wù)邏輯在這兒)和數(shù)據(jù)層。邏輯層是程序的重點,它包括程序所有的規(guī)則和行為。人們經(jīng)常認為測試是試用一個產(chǎn)品。對汽車來說這非常容易:打火、發(fā)動。對桌面應(yīng)用也很容易:啟動程序,四處點點鼠標、敲敲鍵盤,可以測試你要測的功能。但是,你怎么測試一個由很多Java class組成的Jar文件呢?
二、測試Java類(Testing Java Classes)
當然,本質(zhì)上說也可以算是啟動Java類,然后點擊按鈕。測試一個Java類的途徑是在另一個Java類中調(diào)用這個類的方法。下面的例子是一個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);
}
}