从你们知道的测试驱动开发开始,涉及到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);
}
}
}