單元測試就是編寫的一段代碼,用於檢驗目標代碼的一個功能模塊是否正確,就是對代碼功能是否達到要求的測試。html
JUnit是一個Java語言的單元測試框架。 JUnit有它本身的JUnit擴展生態圈。多數Java的開發環境都已經集成了JUnit做爲單元測試的工具。java
現階段不少人都會使用JUnit4.x版原本進行單元測試。app
JUnit4.x中擁有多個經常使用註解:框架
1.建立一個JUnitTest的項目,再寫一個叫作CeShi的類(測試)。eclipse
public class CeShi { private static int result; public void add(int n) { result = result + n; //這個是正確的 } public void minus(int n) { result = result + 10086; //明顯是錯誤的 } public int getResult(){ return result; } }
2.將JUnit4導入項目中。ide
右擊項目選擇最下面的Properties(屬性)工具
3.生成測試框架。單元測試
在CeShi.java上右擊,創造新的JUnit Test Case。測試
next後選擇CeShi中寫出來的兩個方法spa
結束後自動生成了一個新類,叫CeShiTest
4.修改CeShiTest的代碼。
import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public class CeShiTest { private static CeShi ceshi = new CeShi(); @Before public void setUp() throws Exception { } @Test public void testAdd() { ceshi.add(3); ceshi.add(4); assertEquals(7, ceshi.getResult()); } @Test public void testMinus() { ceshi.add(8); ceshi.minus(3); assertEquals(5, ceshi.getResult()); } }
5.運行測試代碼。
6.測試結果
表示第一個add成功,而第二個minus失敗。
_(:3 」∠ )__(:3 」∠ )__(:3 」∠ )__(:3 」∠ )_***分割線***_(:3 」∠ )__(:3 」∠ )__(:3 」∠ )__(:3 」∠ )_
其實我本身也以爲我上面的寫的那個太簡陋了…………因而我打算找一個JAVA項目來進行測試,而後我發現一個嚴重的問題:網上java項目太多我難如下手(´A`。)
因而我便借鑑了博客園一位用戶的代碼
地址:https://www.cnblogs.com/happyzm/p/6482886.html
在原先的基礎上添加了一些代碼
public class CeShi { private static int result; public void add(int n) { result = result + n; //這個是正確的 } public void minus(int n) { result = result + 10086; //明顯是錯誤的 } public void multiply(int n) { } // 此方法還沒有寫好 public void divide(int n) { result = result / n; } public void square(int n) { result = n * n; } public void squareRoot(int n) { for (; ;) ; //Bug : 死循環 } public void clear() { result = 0; } public int getResult(){ return result; } }
import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import jdk.nashorn.internal.ir.annotations.Ignore; public class CeShiTest { private static CeShi ceshi = new CeShi(); @Before public void setUp() throws Exception { ceshi.clear(); } @Test public void testAdd() { ceshi.add(3); ceshi.add(4); assertEquals(7, ceshi.getResult()); } @Test public void testMinus() { ceshi.add(8); ceshi.minus(3); assertEquals(5, ceshi.getResult()); } @Test public void testSubstract() { ceshi.add(8); ceshi.minus(3); assertEquals(5, ceshi.getResult()); } @Test public void testMultiply() { fail("Not yet implemented"); } @Test public void testDivide() { ceshi.add(8); ceshi.divide(2); assertEquals(4, ceshi.getResult()); } }
因爲其中有一個死循環,而JUnit還能夠限時,因此我在本身的電腦上跑了一遍。
在CeShiTest.java裏添加代碼:
@Test(timeout = 2000) public void squareRoot() { ceshi.squareRoot(4); assertEquals(2, ceshi.getResult()); }
JUnit也能夠進行異常測試,我本身在電腦上試了一下,這裏就不說了,是按照https://www.cnblogs.com/happyzm/p/6482886.html 裏去作的。
JUnit使用起來很方便,但我如今才發覺,做爲一個軟件工程的學生,只會擺出理論的一套,實際上手去作的時候老是不知該如何開始。
其次就是,我明白了JUnit是個什麼東西,它有什麼用,但實際要用到項目上去的時候,我極可能會完徹底全的忽略掉它。
仍是把網上的各類項目都試試看吧,java基礎很差,各類項目我都看暈了_(´ཀ`」 ∠)_