JUnit 是用於測試 java程序的一個工具,是在軟件開發中非常重要的技術。
JUnit的用處:
這個工具可以針對特定的java程序生成對應的測試程序,在測試程序裏用正確答案和java程序跑出來的答案做對比,一定程度上可以檢驗java程序的正確性。
爲什麼要用JUnit?
我們在編寫程序的時候,常常需要在寫完一個函數或者方法之後,檢驗它的正確性。在最基礎的編程階段時,我們寫的程序通常也不會很複雜,這時候直接把答案輸出來,對比對比就能出結論。但是當我們寫的程序變得越來越複雜的時候,如果還在函數裏面把結果輸出來,之後再去找的時候就會很麻煩,如果這還不是自己寫的程序,就更麻煩了,所以最好就要有一個專門用於測試的程序,這時JUnit就會顯得特別重要。
JUnit在哪?
如果你安裝的java編寫程序是eclipse,這就很好辦,因爲eclipse自帶JUnit,只是不同版本的eclipse把JUnit放在了不同的地方,但是也很好找。
怎麼用JUnit?
- 既然是測試工具,那就要有被測試的對象,在學習使用JUnit的時候,可以自己先寫一個簡單的程序,下面是我用來測試的java程序。
package test;
public class JUnitTest {
public int gcd(int a,int b) {
return b==0?a:gcd(b,a%b);
}
public int add(int a,int b) {
return a+b;
}
}
2. 在這個包含類的project按右鍵->Properties->Java Build Path->Add Library->JUnit->Next->JUnit5->Finish
這樣就把JUnit需要用到的包導進來了。
3. 在這個被測試類上按右鍵->New->JUnit Test Case
(沒有直接在菜單裏找到JUnit Test Case的話可以在Other裏找到Java->JUnit->JUnit Test Case,新的版本就需要自己想辦法翻一翻啦。。)然後按Next,就會彈出下面這個框。
勾選setUp,按Next,就會出現下面這個框,勾選想要測試的方法
此時就會生成一個測試文件,如下所示
package test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class JUnitTestTest {
@BeforeEach
void setUp() throws Exception {
}
@Test
void testGcd() {
fail("Not yet implemented");
}
@Test
void testAdd() {
fail("Not yet implemented");
}
}
可以看到,生成的文件裏面有幾個標識符,如@BeforeEach和@Test,它們的解釋可以參考https://junit.org/junit5/docs/current/user-guide/
在@Test之後的是測試部分,可以看到,我們之前勾選過的方法都有一個對應的測試方法,裏面的內容需要自己填寫,用assertEquals((正確答案),(調用程序跑出來的結果));去測試。填寫後的代碼如下:
package test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class JUnitTestTest {
JUnitTest test = new JUnitTest();
@BeforeEach
void setUp() throws Exception {
}
@Test
void testGcd() {
assertEquals(3,test.gcd(3, 9));
}
@Test
void testAdd() {
assertEquals(12,test.add(3, 9));
}
}
對這個測試類按右鍵->Run As JUnit Test,就會得到這個結果:
左邊欄會出現一個JUnit的結果:
下面顯示的 Runs:2/2 表示兩個Test都可以運行,Errors:0表示沒有出錯,Failures:0表示沒有運行失敗,這時下面顯示出一個綠色的橫條,表明測試沒有出錯,如果出錯了,下面就會是紅色的橫條,橫條下面就會有各個測試的情況,若某個測試的右下角有一個小小的紅色叉號,表明這個測試出了錯,點擊這個測試,下面的Failure Trace就會顯示出錯誤原因。
這個只是初步的學習,之後對JUnit有了更深一步的理解或者更好的應用的時候再回來更新吧~~