Test a little ,code a little ,實戰junit
Notyy的junit教程(一)
有了junit,java程序的單元測試變成非常簡單的事。而在寫代碼前先寫測試這個似乎不可思議的規定也變的十分合理而且能有效的幫助程序的設計。
下面是一個aclearcase/" target="_blank" >ccountbean的例子,假設我們要實現一個帳戶管理程序,能夠向帳戶中增加、減少金額,還能在帳戶間轉帳。很顯然需要有一個account類,且慢寫代碼!在寫代碼前先寫測試,測試如何寫?假設你已經有這個account類,你希望如何使用它?顯然首先要初始化它,一個帳戶應該知道他的擁有者,和他現有的金額,那么他應該有個構建器形如:
account(String Owner,double Balance);那先寫測試這個構建器的代碼,如下:
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得到如下結果
FAILURES!!!
Test Results:
Run:1 Failure :1 Errors:0
There was 1 failure
1) testAccount(account.AccountTest) “expected . but was ”
感覺如何,測試程序得出了我們預料的結果,因為構建器還沒有實現呢!
現在我們來實現構建器
public Account(String aOwner,double aBalance) {
Owner=aOwner;
Balance=aBalance;
}