Test a little ,code a little ,實戰(zhàn)junit
Notyy的junit教程(一)
有了junit,java程序的單元測試變成非常簡單的事。而在寫代碼前先寫測試這個似乎不可思議的規(guī)定也變的十分合理而且能有效的幫助程序的設(shè)計。
下面是一個aclearcase/" target="_blank" >ccountbean的例子,假設(shè)我們要實現(xiàn)一個帳戶管理程序,能夠向帳戶中增加、減少金額,還能在帳戶間轉(zhuǎn)帳。很顯然需要有一個account類,且慢寫代碼!在寫代碼前先寫測試,測試如何寫?假設(shè)你已經(jīng)有這個account類,你希望如何使用它?顯然首先要初始化它,一個帳戶應(yīng)該知道他的擁有者,和他現(xiàn)有的金額,那么他應(yīng)該有個構(gòu)建器形如:
account(String Owner,double Balance);那先寫測試這個構(gòu)建器的代碼,如下:
package account;
import junit.framework.TestCase;
public class AccountTest extends TestCase {
private Account AccountA;
private Account AccountB;
public AccountTest(String name) {
super(name);
}
public static void main(String args[]) {
junit.textui.TestRunner.run(AccountTest.class);
}
public void testAccount(){
AccountA=new Account("notyy",100);
AccountB=new Account("bricks",200);
assertEquals("notyy",AccountA.Owner);
assertEquals(100,AccountA.Balance,2);
assertEquals("bricks",AccountB.Owner);
assertEquals(200,AccountB.Balance,2);
}
}這段代碼無法編譯,因為沒有account類,我們來為account類寫個骨架,使他能夠編譯。代碼如下:
package account;
public class Account {
private String Owner;
private double Balance;
public Account(String aOwner,double aBalance) {
}
}
編譯后,寫個批命令來運行測試程序,如下:
test.bat
java -cp %classpath%;d:javaprjaccountclasses account.AccountTest
別忘了把junit.jar包含在你的classpath里,junit的配置這里不再多說。
運行test.bat得到如下結(jié)果
FAILURES!!!
Test Results:
Run:1 Failure :1 Errors:0
There was 1 failure
1) testAccount(account.AccountTest) “expected . but was ”
感覺如何,測試程序得出了我們預(yù)料的結(jié)果,因為構(gòu)建器還沒有實現(xiàn)呢!
現(xiàn)在我們來實現(xiàn)構(gòu)建器
public Account(String aOwner,double aBalance) {
Owner=aOwner;
Balance=aBalance;
}