新建Java項目,目錄結構如圖
java
T.java數據庫
package com.umgsai.junit4; public class T { public int add(int x, int y) { return x + y; } public int divide(int x, int y) { return x/y; } public static void main(String[] args) { System.out.println(new T().add(2, 5)); //單元測試是寫一個類要給別人用,測試會不會有bug //不用main方法來測試緣由:不能一塊兒運行,大多數狀況下須要人爲觀察輸出肯定是否正確 //階段:需求 分析 開發 測試 部署 維護升級(成本最高。佔60%左右) } }
TTest.javaless
package com.umgsai.junit4.test; //靜態引入,JDK5以後的語法 import static org.junit.Assert.*; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import static org.hamcrest.Matchers.*; import com.umgsai.junit4.T; public class TTest { @BeforeClass//測試類全部方法開始以前執行。好比提早創建數據庫的鏈接。 public static void BeforeClass(){ System.out.println("BeforeClass..."); } @AfterClass//測試類全部方法結束以後執行。好比關閉數據庫的鏈接。 public static void AfterClass(){ System.out.println("AfterClass..."); } @Before//測試方法開始以前執行 public void before() { System.out.println("before..."); } @Test public void testAdd() { // 靜態引入以後能夠直接使用下面的方法 // fail("Not yet implemented"); int z = new T().add(5, 3); assertEquals(8, z); // Keep the bar green to keep the code clean. // assertTrue(z > 3); // assertTrue("z too small", z > 10);//加上錯誤消息 // assertThat(z, is(8)); // assertThat(z, allOf(greaterThan(1), lessThan(10)));//allOf中的條件必須都知足 // assertThat(z, anyOf(greaterThan(56), lessThanOrEqualTo(11)));//知足其中一個條件便可 // assertThat(z, anything());// // assertThat("umgsai", is("umgsai")); // assertThat("umgsai", not("umgsai1")); // assertThat("umgsai", containsString("sa")); // assertThat("umgsai", endsWith("sai")); // assertThat("umgsai", startsWith("umg")); // assertThat("umgsai", equalTo("umgsai11")); // assertThat("umgsai", equalToIgnoringCase("Umgsai")); // assertThat("umgsai", equalToIgnoringWhiteSpace(" umgsai")); // assertThat(3.2, closeTo(3.0, 0.2));//區間(2.8, 3.2) // assertThat(3.2, greaterThan(3.0)); // assertThat(3.2, lessThan(12.0)); // assertThat(5.0, greaterThanOrEqualTo(5.0)); // assertThat(5.0, lessThanOrEqualTo(5.0)); // assertThat(map, hasEntry("key", "value")); // assertThat(iterable, hasItem("item")); // assertThat(map, hasKey("key")); // assertThat(map, hasValue("value")); //Error是程序出錯 //Failure是測試失敗 } //@Ignore//不執行此測試方法 @Test(expected=java.lang.ArithmeticException.class, timeout=100)//指望拋異常.而且在100毫秒以內結束 public void testDivide() { int z = new T().divide(8, 0); assertThat(z, is(4)); } @After//測試方法結束以後執行 public void after() { System.out.println("after..."); } }
同時測試多個類。在某個包上右鍵選擇Run as ->Run confugrations->Run all tests in the selected project....ide