1.Junit是什么?
Junit是用于编写和运行可重复的自动化测试的开源测试框架。提供了断言用于测试结果,Junit4也提供了注解方便测试
2.测试使用Junit
(2.1)目录,记得引入Junit4包
(2.2)GetSum.java #一个求和函数
package pers.junit.learn.test;
public class GetSum {
public int sum(int s1, int s2){
System.out.println("求值:"+s1+" + "+s2);
return s1+s2;
}
}
(2.3)GetSumTest.java #利用Junit测试求和函数,注意测试单元前书写@Test
package pers.junit.learn.test;
import static org.junit.Assert.*;
import org.junit.*;
import java.util.*;
public class GetSumTest {
GetSum getSum = new GetSum();
int sum = getSum.sum(6, 7);
int testsum = 13;
@Test
public void testSum(){
System.out.println("比较: "+sum+"&"+testsum);
assertEquals(sum,testsum);
}
}
(2.4)运行代码 run As Junit Test,Junit测试成功,可以在控制台的Junit模块显示如下信息:
(2.5)测试失败,控制台右侧提示错误信息。
3.Junit注解
(3.1) 注解简介
- @Test #表示下面紧跟的方法是一个测试用例
- @BeforeClass #表示紧跟的附着的静态方法在所有的测试用例执行前执行一遍
- @Before #表示紧跟的方法在每个测试用例执行前都会执行一遍
- @After #表示紧跟的方法在每个测试用例执行后都会执行一遍
- @AfterClass #表示紧跟的静态方法在所有测试用例执行后会执行
- @Ignore #表示紧跟的方法在测试过程中会忽略,不会被执行
(3.2)注解测试
TestZhujie.java #测试Junit注解的执行方式
package pers.junit.learn.test;
import org.junit.*;
import static org.junit.Assert.*;
import java.util.*;
public class TestZhujie {
GetSum getSum = new GetSum();
@Test
public void TestSum_1(){
int sum1 = getSum.sum(1,3);
int sum1test = 4;
System.out.println("@Test: "+sum1+"&"+sum1test);
assertEquals(sum1,sum1test);
}
@Test
public void TestSum_2(){
int sum2 = getSum.sum(7,6);
int sum2test = 13;
System.out.println("@Test:"+sum2+"&"+sum2test);
assertEquals(sum2,sum2test);
}
@Before
public void beforeTest(){
System.out.println("@Before: ----------------");
}
@BeforeClass
public static void beforeclassTest(){
System.out.println("@BeforeClass: ----------------");
}
@After
public void afterTest(){
System.out.println("@After: -----------------");
}
@AfterClass
public static void afterclassTest(){
System.out.println("@AfterClass: ------------------");
}
@Ignore
public void ignoreTest(){
System.out.println("@Ignore: ----------------------");
}
}
(3.3)运行结果 #每个注解的执行位置都直观可见
4.Junit断言
(4.1)断言简述
void assertEquals([String message], expected value, actual value) | 断言两个值相等。值可能是类型有 int, short, long, byte, char or java.lang.Object. 第一个参数是一个可选的字符串消息 |
void assertTrue([String message], boolean condition) | 断言一个条件为真 |
void assertFalse([String message],boolean condition) | 断言一个条件为假 |
void assertNotNull([String message], java.lang.Object object) | 断言一个对象不为空(null) |
void assertNull([String message], java.lang.Object object) | 断言一个对象为空(null) |
void assertSame([String message], java.lang.Object expected, java.lang.Object actual) | 断言,两个对象引用相同的对象 |
void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual) | 断言,两个对象不是引用同一个对象 |
void assertArrayEquals([String message], expectedArray, resultArray) | 断言预期数组和结果数组相等。数组的类型可能是 int, long, short, char, byte or java.lang.Object. |
(4.2)TestDuanyan.java #断言测试
package pers.junit.learn.test;
import static org.junit.Assert.*;
import org.junit.Test;
public class TestDuanyan {
@Test
public void TestDuanyan(){
String str1 = "onezero";
String str2 = "onezero";
String str3 = "www.onezero.cc";
String str4 = null;
int[] arr1 = {1,0,10};
int[] arr2 = {1,0,10};
char[] arr3 = {'o','z'};
char[] arr4 = {'o','z'};
assertEquals(str1,str2);
assertTrue(10 == 10); #测试if条件或变量是true还是false。
assertFalse(1 == 2);
assertNotNull(str3);
assertNull(str4);
assertSame(str1,str2); #测试两个引用对象指向完全相同的对象
assertNotSame(str2,str3);
assertArrayEquals(arr1,arr2);
assertArrayEquals(arr3,arr4);
}
}
注意如果断言方法判断为错误时,测试会终止,同时在Junit工作窗口会显示错误信息。