JunitTest

Junit回归测试框架的基本使用

测试先行的思想

单元测试Junit属于白盒测试

定义一个测试方法:

1.测试方法,必须是公共的无参数无返回的方法.建议使用test开头.
2.想要测试哪个方法,需要在该方法上贴一个注解@Test
1
2
3
4
5
6
7
8
import org.junit.Test;

public class HelloTest {
@Test
public void addTest() {
System.out.println("添加用户信息");
}
}

Junit细节:

更多是针对接进行测试,要测试一个接口中的方法,必须按照规范流程

定义一个接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package me.cscar.Junit;

/**
* 接口规范:文档注释
* 数学运算的加减乘除方法
*
* @author cscar
* @date 2019/3/29
*/
public interface IMath {
/**
* 计算两个数相加
* @param a
* @param b
* @return
*/
int add(int a, int b);

/**
* 计算两个数相除
* @param a
* @param b
* @return
*/
int div(int a, int b);
}

根据接口生成实现类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package me.cscar.Junit;

/**
* 实现IMath接口
*/
public class Math implements IMath {
@Override
public int add(int a, int b) {
return a + b;
}

@Override
public int div(int a, int b) {
return a / b;
}

}

根据接口生成实现类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package me.cscar.Junit;

import org.junit.Test;

import static org.junit.Assert.*;

//测试数学运算
public class MathTest {

/**
* 面向接口,创建数学类对象
*/
private IMath math = new Math();

@Test
public void add() {
int result = math.add(3, 4);
System.out.println(result);
}

@Test
public void div() {
int result = math.div(10, 0);
System.out.println(result);
}
}

断言:

猜测一个程序结果是否是期望结果
1.:Assert.assertEquals(message, expected, actual):比较的值
三个参数:
message: 断言失败的提示信息,断言成功不会显示.
expected: 期望值
actual: 真实值

2.:Assert.assertSame(message, expected, actual):比较地址,是同一个对象
   Assert.assertNotSame(message, expected, actual):断言不是同一个对象
3.:Assert.assertTrue(message, condition):断言condition应该为TRUE.
Assert.assertFalse(message, condition):断言condition应该为FALSE.
4.:Assert.assertNull(message, object):断言对象object为null.
Assert.assertNotNull(message, object):断言对象object不为null.
5.:@Test(expected=ArithmeticException.class)
   期望该方法报错ArithmeticException.
6.:@Test(timeout=400)
   期望该方法在400毫秒之内执行完成.
1
2
3
4
5
6
7
8
9
10
11
12
@Test
public void add() {
int result = math.add(3, 4);
//System.out.println(result);
Assert.assertEquals("3+4我都能算错?", 8, result);
}

@Test(expected = ArithmeticException.class)
public void div() {
int result = math.div(10, 0);
System.out.println(result);
}

Junit自动化操作

自动初始化
自动销毁

1.@Test:需要测试的方法,必须贴Test注解.并且测试方法必须是公共无参数无返回的方法.
2.@Before:在所有的测试方法之前,都会执行的代码
3.@After:在所有的测试方法之后,都会执行的代码
4.@BeforeClass:在所有操作之前执行,只执行一次.
5.@AfterClass:在所有操作之前执行,只执行一次.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package me.cscar.junit.work;

import org.junit.*;

public class WorkTest {
@Test
public void query() {
System.out.println("查询用户信息");
}

@Test
public void delete() {
System.out.println("删除用户信息");
}

@Before
public void init() {
System.out.println("登录");
}

@After
public void story() {
System.out.println("注销");
}

@BeforeClass
public static void BeforeClass() {
System.out.println("所有操作之前");
}

@AfterClass
public static void AfterClass() {
System.out.println("所有操作之后");
}
}