单元测试:
如果一个方法是测试方法,必须加上@Test注解
测试方法必须没有返回值,且不能有参数
Junit Test case--> 选择版本4 --> 设置名称和要测试的类 --> 选择下一步 --> 选择要测试的方法 --> finish
如果没有要测试的类,则只需建立一个测试类即可;
outline--> 选择要执行的测试方法 --> 执行 结果为绿色 则成功; 也可以将鼠标放在方法名上执行
检测时,点击单元测试类运行,即可一次性测试所有的测试方法
例子:对类SomeDao中的sum和divide方法进行测试
public class SomeDao {
public int sum(int i, int j){
return i+j;
}
public int divide(int i, int j){
return i/j;
}
}
单元测试1:
import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.Test;
import cn.itcast.dao.SomeDao;
public class SomeDaoTest1 {
@Test
public void testSum() {
SomeDao dao = new SomeDao();
int result = dao.sum(1, 2);
System.out.println(result);
}
@Test
public void testDivide() {
SomeDao dao = new SomeDao();
int result = dao.divide(6, 2);
// 使用断言方法 第一个参数为期望值,后面为实际值
// 比在控制台输出人为校验好,断言由程序校验
Assert.assertEquals(3, result);
}
// 测试不正常结果(异常)
@Test(expected=java.lang.ArithmeticException.class)
public void testDivide2(){
SomeDao dao = new SomeDao();
int result = dao.divide(6, 0);
}
// 测试效率: 10ms内完成
@Test(timeout=10) // 单位是毫秒
public void testDivide1() {
SomeDao dao = new SomeDao();
int result = dao.divide(6, 2);
Assert.assertEquals(3, result);
}
}
*******************************************************************************************************************
单元测试2:
public class SomeDaoTest3 {
static SomeDao dao = null;
@Before // 每个测试方法执行前会执行该方法
public void newD(){
// System.out.println("新建dao对象");
dao = new SomeDao();
}
@After // 每个测试方法执行后会调用该方法
public void nullD(){
// System.out.println("清空dao对象");
dao = null;
}
@Test
public void testSum() {
int result = dao.sum(1, 2);
System.out.println(result);
}
@Test
public void testDivide() {
int result = dao.divide(6, 2);
Assert.assertEquals(3, result);
}
// 测试不正常结果(异常)
@Test(expected=java.lang.ArithmeticException.class)
public void testDivide2(){
int result = dao.divide(6, 0);
}
// 测试效率: 10ms内完成
@Test(timeout=10) // 单位是毫秒
public void testDivide1() {
int result = dao.divide(6, 2);
Assert.assertEquals(3, result);
}
}
******************************************************************************************************************
单元测试3:
import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import cn.itcast.dao.SomeDao;
public class SomeDaoTest4 {
static SomeDao dao = null;
@BeforeClass // 类加载时就调用,只执行一次
public static void newD(){
System.out.println("类加载时新建dao对象");
dao = new SomeDao();
}
@AfterClass // 类退出时只执行一次
public static void nullD(){
System.out.println("类结束时清空dao对象");
dao = null;
}
@Test
public void testSum() {
int result = dao.sum(1, 2);
System.out.println(result);
}
@Test
public void testDivide() {
int result = dao.divide(6, 2);
// 使用断言方法 第一个参数为期望值,后面为实际值
// 比在控制台输出人为校验好,断言由程序校验
Assert.assertEquals(3, result);
}
// 测试不正常结果(异常)
@Test(expected=java.lang.ArithmeticException.class)
public void testDivide2(){
int result = dao.divide(6, 0);
}
// 测试效率: 10ms内完成
@Test(timeout=10) // 单位是毫秒
public void testDivide1() {
int result = dao.divide(6, 2);
Assert.assertEquals(3, result);
}
}
如果一个方法是测试方法,必须加上@Test注解
测试方法必须没有返回值,且不能有参数
Junit Test case--> 选择版本4 --> 设置名称和要测试的类 --> 选择下一步 --> 选择要测试的方法 --> finish
如果没有要测试的类,则只需建立一个测试类即可;
outline--> 选择要执行的测试方法 --> 执行 结果为绿色 则成功; 也可以将鼠标放在方法名上执行
检测时,点击单元测试类运行,即可一次性测试所有的测试方法
例子:对类SomeDao中的sum和divide方法进行测试
public class SomeDao {
public int sum(int i, int j){
return i+j;
}
public int divide(int i, int j){
return i/j;
}
}
单元测试1:
import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.Test;
import cn.itcast.dao.SomeDao;
public class SomeDaoTest1 {
@Test
public void testSum() {
SomeDao dao = new SomeDao();
int result = dao.sum(1, 2);
System.out.println(result);
}
@Test
public void testDivide() {
SomeDao dao = new SomeDao();
int result = dao.divide(6, 2);
// 使用断言方法 第一个参数为期望值,后面为实际值
// 比在控制台输出人为校验好,断言由程序校验
Assert.assertEquals(3, result);
}
// 测试不正常结果(异常)
@Test(expected=java.lang.ArithmeticException.class)
public void testDivide2(){
SomeDao dao = new SomeDao();
int result = dao.divide(6, 0);
}
// 测试效率: 10ms内完成
@Test(timeout=10) // 单位是毫秒
public void testDivide1() {
SomeDao dao = new SomeDao();
int result = dao.divide(6, 2);
Assert.assertEquals(3, result);
}
}
*******************************************************************************************************************
单元测试2:
public class SomeDaoTest3 {
static SomeDao dao = null;
@Before // 每个测试方法执行前会执行该方法
public void newD(){
// System.out.println("新建dao对象");
dao = new SomeDao();
}
@After // 每个测试方法执行后会调用该方法
public void nullD(){
// System.out.println("清空dao对象");
dao = null;
}
@Test
public void testSum() {
int result = dao.sum(1, 2);
System.out.println(result);
}
@Test
public void testDivide() {
int result = dao.divide(6, 2);
Assert.assertEquals(3, result);
}
// 测试不正常结果(异常)
@Test(expected=java.lang.ArithmeticException.class)
public void testDivide2(){
int result = dao.divide(6, 0);
}
// 测试效率: 10ms内完成
@Test(timeout=10) // 单位是毫秒
public void testDivide1() {
int result = dao.divide(6, 2);
Assert.assertEquals(3, result);
}
}
******************************************************************************************************************
单元测试3:
import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import cn.itcast.dao.SomeDao;
public class SomeDaoTest4 {
static SomeDao dao = null;
@BeforeClass // 类加载时就调用,只执行一次
public static void newD(){
System.out.println("类加载时新建dao对象");
dao = new SomeDao();
}
@AfterClass // 类退出时只执行一次
public static void nullD(){
System.out.println("类结束时清空dao对象");
dao = null;
}
@Test
public void testSum() {
int result = dao.sum(1, 2);
System.out.println(result);
}
@Test
public void testDivide() {
int result = dao.divide(6, 2);
// 使用断言方法 第一个参数为期望值,后面为实际值
// 比在控制台输出人为校验好,断言由程序校验
Assert.assertEquals(3, result);
}
// 测试不正常结果(异常)
@Test(expected=java.lang.ArithmeticException.class)
public void testDivide2(){
int result = dao.divide(6, 0);
}
// 测试效率: 10ms内完成
@Test(timeout=10) // 单位是毫秒
public void testDivide1() {
int result = dao.divide(6, 2);
Assert.assertEquals(3, result);
}
}