作爲一個測試工程師你會單元測試嗎?

1240

我們在大型程序開發工作的時候,需要寫成千上萬個方法,這些方法的功能可能很強大,但我們在程序中只用到該方法的一小部分功能,並且經過調試可以確定,這一小部分功能是正確的。但是,我們同時應該確保每一個方法都完全正確,因爲如果我們今後如果對程序進行擴展,用到了某個方法的其他功能,而這個功能有bug的話,那是一件非常鬱悶的事情。所以說,每編寫完一個方法之後,都應該對這個方法的方方面面進行測試,這樣的測試我們稱之爲單元測試。傳統的編程方式,進行單元測試是一件很麻煩的事情,你要重新寫另外一個程序,在該程序中調用你需要測試的方法,並且仔細觀察運行結果,看看是否有錯。正因爲如此麻煩,所以程序員們編寫單元測試的熱情不是很高。於是有一個牛人推出了單元測試包,大大簡化了進行單元測試所要做的工作,這是JUnit4。本文簡要介紹一下在Eclipse中使用JUnit4進行單元測試的方法。

一.測試環境的搭建:

1. 被測試類的創建:

首先新建一個項目叫JUnit_Test,我們編寫一個Calculator類,這是一個能夠簡單實現加減乘除、平方、開方的計算器類,然後對這些功能進行單元測試。這個類並不是很完美,我們故意保留了一些BUG用於演示,這些Bug在註釋中都有說明。該類代碼如下:

public class Calculator {

// 靜態變量,用於存儲運行結果

private static double result;

public void add(double n) {

result = result + n;

}

//Bug: 正確的應該是 result = result-n

public void substract(double n) {

result = result - 1;

}

public void multiply(double n) {

// 此方法尚未寫好測試交流羣:1017539290,進羣免費領取測試學習資料!

}

public void divide(double n) {

result = result / n;

}

public void square(double n) {

result = n * n;

}

//Bug : 死循環

public void squareRoot(double n) {

for (; ;) ;

}

// 將結果清零

public void clear() {

result = 0;

}

public double getResult() {

return result;

}

}

2. 測試類的創建:

在Eclipse中創建單元測試類:

(1).New --> Junit Test Case

1240

  (2).選擇要覆蓋的方法

1240

(3).生成模板:

public class CalculatorTest {

@BeforeClass

public static void setUpBeforeClass() throws Exception {

}

@AfterClass

public static void tearDownAfterClass() throws Exception {

}

@Before

public void setUp() throws Exception {

}

@After

public void tearDown() throws Exception {

}

@Test

public void testAdd() {

fail("Not yet implemented");

}

@Test

public void testSubstract() {

fail("Not yet implemented");

}

@Test

public void testMultiply() {

fail("Not yet implemented");

}

@Test

public void testDivide() {

fail("Not yet implemented");

}

@Test

public void testSquare() {

fail("Not yet implemented");

}

@Test

public void testSquareRoot() {

fail("Not yet implemented");

}

@Test

public void testClear() {

fail("Not yet implemented");

}

@Test

public void testGetResult() {

fail("Not yet implemented");

}

}

二、單元測試類的編寫:

1. 前置和後置方法設置:測試交流羣:1017539290,進羣免費領取測試學習資料!

private static Calculator calculator;

@BeforeClass

public static void setUpBeforeClass() throws Exception {

calculator = new Calculator();

}

@AfterClass

public static void tearDownAfterClass() throws Exception {

calculator = null;

}

@Before

public void setUp() throws Exception {

calculator.clear();

}

@After

public void tearDown() throws Exception {

calculator.clear();

}

(2). 測試類的設置:

@Test

public void testAdd() {

calculator.add(2);

calculator.add(3);

assertEquals(5, calculator.getResult());

}

(3). 忽略位完成的測試類:@Ignore

@Test

@Ignore

public void testSubstract() {

fail("Not yet implemented");

}

(4). 測試:

@Test(timeout  =   1000 )

public void testSquare() {

calculator.squareRoot( 4 );

assertEquals( 2 , calculator.getResult());

}

(5). 異常測試:

@Test(expected  =  ArithmeticException. class )

public void testDivide() {

calculator.divide( 0 );

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章