java 计算器 junit测试_Java中Junit4测试实例
Junit簡介
JUnit: JUnit是一個(gè)Java語言的單元測試框架。
單元測試:單元測試的目的不是證明你的程序是正確的,而是證明你的程序沒有錯(cuò)誤
目前流行的版本3.8和4.0
Junit3.X:需要繼承于TestCase
Junit4.0:增加了annotation注解
測試方法
@Test
注意:JUnit推薦的做法是以test作為待測試的方法的開頭,這樣這些方法可以被自動(dòng)找到并被測試。
斷言
@BeforeClass修飾的方法會(huì)在所有方法被調(diào)用前被執(zhí)行,而且該方法是靜態(tài)的,所以當(dāng)測試類被加載后接著就會(huì)運(yùn)行它, 而且在內(nèi)存中它只會(huì)存在一份實(shí)例,它比較適合加載配置文件。
@AfterClass所修飾的方法通常用來對資源的清理,如關(guān)閉數(shù)據(jù)庫的連接。
@Before和@After會(huì)在每個(gè)測試方法的前后各執(zhí)行一次。
Failure一般由單元測試使用的斷言方法判斷失敗所引起的,這經(jīng)表示 測試點(diǎn)發(fā)現(xiàn)了問題 ,就是說程序輸出的結(jié)果和我們預(yù)期的不一樣。
error是由代碼異常引起的,它可以產(chǎn)生于測試代碼本身的錯(cuò)誤,也可以是被測試代碼中的一個(gè)隱藏的bug。
測試用例不是用來證明你是對的,而是用來證明你沒有錯(cuò)。
最恐怖的bug是邏輯bug.
最佳實(shí)踐方式
1.測試方法上必須使用@Test進(jìn)行修飾
2.測試方法必須使用public void 進(jìn)行修飾,不能帶任何的參數(shù)
3.新建一個(gè)源代碼目錄來存放我們的測試代碼
4.測試類的包應(yīng)該和被測試類保持一致
5.測試單元中的每個(gè)方法必須可以獨(dú)立測試,測試方法間不能有任何的依賴
6.測試類使用Test作為類名的后綴(不是必須)
7.測試方法使用test作為方法名的前綴(不是必須)
常用注解
@Test(expected=ArithmeticException.class)
@Ignore("提示信息")//所修飾的測試方法會(huì)被測試運(yùn)行器忽略
@Test(timeout=2000)//設(shè)置超時(shí)時(shí)間
@RunWith //可以更改測試運(yùn)行器 org.junit.runner.Runner
junit4 assert類中的assert方法總結(jié) :
junit中的assert方法全部放在Assert類中,總結(jié)一下junit類中assert方法的分類。
1.assertTrue/False([String message,]boolean condition);
判斷一個(gè)條件是true還是false。
2.fail([String message,]);
失敗,可以有消息,也可以沒有消息。
3.assertEquals([String message,]Object expected,Object actual);
判斷是否相等,可以指定輸出錯(cuò)誤信息。
第一個(gè)參數(shù)是期望值,第二個(gè)參數(shù)是實(shí)際的值。
這個(gè)方法對各個(gè)變量有多種實(shí)現(xiàn)。在JDK1.5中基本一樣。
但是需要主意的是float和double最后面多一個(gè)delta的值,可能是誤差范圍
4.assertNotNull/Null([String message,]Object obj);
判讀一個(gè)對象是否非空(非空)。
5.assertSame/NotSame([String message,]Object expected,Object actual);
判斷兩個(gè)對象是否指向同一個(gè)對象。看內(nèi)存地址。
7.failNotSame/failNotEquals(String message, Object expected, Object actual)
當(dāng)不指向同一個(gè)內(nèi)存地址或者不相等的時(shí)候,輸出錯(cuò)誤信息。
注意信息是必須的,而且這個(gè)輸出是格式化過的。
一。先編寫實(shí)體類 MyCaculator.java
package com.entity;
//計(jì)算器類
public class MyCaculator {
public int add(int x,int y) ///加法
{
return x+y;
}
public int sub(int x,int y) //減法
{
return x-y;
}
public int multi(int x,int y) //乘法
{
return x*y;
}
public double div(int x,int y) //除法
{
return x/y;
}
}
二。編寫測試類 TestMyCaculator.java
package com.entity;
import org.junit.Test;
import junit.framework.Assert;
public class TestMyCaculator {
private static MyCaculator c = new MyCaculator(); // 創(chuàng)建對象
// 測試加法
@Test
public void testAdd() {
int result = c.add(10, 5);
Assert.assertEquals(15, result);
}
// 測試減法
@Test
public void testSub() {
int result = c.sub(10, 5);
Assert.assertEquals(5, result);
}
// 測試乘法
@Test
public void testMulti() {
int result = c.multi(10, 5);
Assert.assertEquals(50, result);
}
// 測試除法
@Test(expected = ArithmeticException.class)
public void testDiv() {
double result = c.div(10, 5); // 算數(shù)異常,這里拋出異常了。
// 這個(gè)斷言執(zhí)行不到。
Assert.assertEquals(3, result);// 這個(gè)斷言能通過嗎?
}
}
需要導(dǎo)入的jar包:junit-4.10.jar
總結(jié)
以上是生活随笔為你收集整理的java 计算器 junit测试_Java中Junit4测试实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java对象的访问定位_JVM创建对象及
- 下一篇: java 配置信息_[Java教程]ja