從你們知道的測試驅動開發開始,涉及到python ,java等語言,有誰深刻了解單元測試究竟是是什麼?下面主要介紹下java的單元測試。java
目前存在的問題:python
1. 目前的方法若是須要測試,都須要在main方法上調用。數組
2. 目前的結果都須要咱們人工對比。ide
junit要注意的細節:單元測試
1. 若是使用junit測試一個方法的時候,在junit窗口上顯示綠條那麼表明測試正確,測試
若是是出現了紅條,則表明該方法測試出現了異常不經過。spa
2. 若是點擊方法名、 類名、包名、 工程名運行junit分別測試的是對應的方法,類、 包中 的全部類的test方法,工程中的全部test方法。排序
3. @Test測試的方法不能是static修飾與不能帶有形參。開發
4. 若是測試一個方法的時候須要準備測試的環境或者是清理測試的環境,那麼能夠@Before、 @After 、@BeforeClass、 @AfterClass這四個註解。get
@Before、 @After 是在每一個測試方法測試的時候都會調用一次, @BeforeClass、 @AfterClass是在全部的測試方法測試以前與測試以後調用一次而已。
junit使用規範:
1. 一個類若是須要測試,那麼該類就應該對應着一個測試類,測試類的命名規範 : 被測試類的類名+ Test.
2. 一個被測試的方法通常對應着一個測試的方法,測試的方法的命名規範是: test+ 被測試的方法的方法名
//One.java
package cn.itcsat.junit;
import static org.junit.Assert.*;
import java.util.Arrays;
import javax.management.RuntimeErrorException;
import org.junit.Test;
public class Demo1 {
@Test //註解
public void getMax(int a, int b){
/* int a = 3;
int b = 5 ;*/
int max = a>b?a:b;
System.out.println("最大值:"+max);
}
@Test
public void sort(){
int[] arr = {12,4,1,19};
for(int i = 0 ; i < arr.length-1 ; i++){
for(int j = i+1 ; j<arr.length ; j++){
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println("數組的元素:"+Arrays.toString(arr));
}
}
//Two.java
package cn.itcsat.junit;
import java.io.FileInputStream;
import java.io.IOException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class Demo2 {
//準備測試的環境
//@Before
@BeforeClass
public static void beforeRead(){
System.out.println("準備測試環境成功...");
}
//讀取文件數據,把把文件數據都
@Test
public void readFile() throws IOException{
FileInputStream fileInputStream = new FileInputStream("F:\\a.txt");
int content = fileInputStream.read();
System.out.println("內容:"+content);
}
@Test
public void sort(){
System.out.println("讀取文件數據排序..");
}
//清理測試環境的方法
// @After
@AfterClass
public static void afterRead(){
System.out.println("清理測試環境..");
}
}
//Three.java
package cn.itcsat.junit;
public class Tool {
public static int getMax(){
int a = 3;
int b =5;
int max = a>b?a:b;
return max;
}
public static int getMin(){
int a = 3;
int b = 5;
int min = a<b?a:b;
return min;
}
}
ThreeTest.java
package cn.itcsat.junit;
import junit.framework.Assert;
import org.junit.Test;
//測試類
public class ToolTest {
@Test
public void testGetMax(){
int max = Tool.getMax();
if(max!=5){
throw new RuntimeException();
}else{
System.out.println("最大值:"+ max);
}
//斷言
//Assert.assertSame(5, max); // expected 指望 actual 真實 ==
// Assert.assertSame(new String("abc"), "abc");
// Assert.assertEquals(new String("abc"), "abc"); //底層是使用Equals方法比較的
// Assert.assertNull("aa");
// Assert.assertTrue(true);
}
@Test
public void testGetMin(){
int min = Tool.getMin();
if(min!=3){
throw new RuntimeException();
}else{
System.out.println("最小值:"+ min);
}
}
}