从0到1学JAVA之第九天——Junit学习及测试

By | 11月 29, 2017

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工作窗口会显示错误信息。

发表评论

您的电子邮箱地址不会被公开。