notyy的junit教程
作者:网络转载 发布时间:[ 2013/1/7 15:37:57 ] 推荐标签:
先写test
public void testDiscount(){
AccountA=new Account("notyy",100);
AccountB=new Account("bricks",200);
AccountA.discount(50);
//100-50=50
assertEquals(50.00,AccountA.getBalance(),2);
AccountB.discount(120);
//200-120=80
assertEquals(80,AccountB.getBalance(),2);
}
然后实现
public void discount(double aMoney){
Balance-=aMoney;
}
后是转帐功能,转帐是从一个帐户转到另一个帐户。其实是调用一个帐户的增加功能和另一个帐户的减少功能。
每个测试里都要建立accountA和accountB是不是很烦,junit考虑到了这一点,所以可以覆盖testcase的setUp方法,在该方法内建立一些所有test都要用到的变量等。
public void setUp(){
AccountA=new Account("notyy",100);
AccountB=new Account("bricks",200);
}
这样,所有的测试方法中都不用再建立这两个实例了。:)
好,写转帐方法的测试
public void testTransfer(){
AccountA.transfer(AccountB,80.00);
//100-80=20
//200+80=280
assertEquals(20.00,AccountA.getBalance(),2);
assertEquals(280.00,AccountB.getBalance(),2);
}
然后建立transfer方法的框架,使它能编译:
public void transfer(Account aAccount,double aBalance){}
测试时报失败,expected “20” but was “100”
然后填入实现 :
public void transfer(Account aAccount,double aBalance){
this.discount(aBalance);
aAccount.credit(aBalance);
}
test OK!
简单的步骤,却可使你对你实现的方法的正确性确信无疑,而且写测试的过程也是设计的过程,如果在写一个方法前,你连应该得到的输出都想不明白,又怎么能动手去写呢?
谁说XP只要code,不要设计呢? :)
好了,junit单元测试的第一个例子写到这吧。很简单吧?