Junit单元测试
- 测试分类:
- 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。功能简单的一些测试。输入:用户名,密码——>登录情况。
- 白盒测试:需要写代码的。关注程序具体的执行流程。高级测试。写一些程序(测试人员、开发人员),对功能进行测试。
Junit介绍
Junit是一个Java语言的单元测试框架,属于白盒测试,简单理解为可以用于取代java的main方法是部分取代。Junit属于第三方工具,需要导入jar包(hamcrest-core-1.3.jar、junit-4.12.jar)后使用。
Junit的使用步骤
- 导入junit的第三方jar包(在当前的模块下新建一个lib文件夹,拷贝jar包,add as lib)
- 编写测试类,简单理解Junit可以用于取代java的main方法
- 在测试类方法上添加注解 @Test
- @Test修饰的方法要求:public void 方法名() {…} ,方法名自定义建议test开头,没有参数。
- 添加Junit库到lib文件夹中,然后进行jar包关联
- 使用:点击方法左侧绿色箭头,执行当前方法(方法必须标记@Test)。执行结果红色:代表失败;执行结果绿色:代表成功
举例:
package com.ccc.demo01Junit;
import org.junit.Test;
public class Demo01Junit {
@Test
public void test01(){
System.out.println("test01方法");
}
@Test
public void test02(){
System.out.println("test02方法");
}
@Test
public void test03(){
System.out.println("test03方法");
}
}
Junit的注意事项:
1.没有被@Test修饰的方法,不能使用Junit单元测试执行
2.Junit单元测试只能执行public void 修饰的空参数的方法
package com.ccc.demo01Junit;
import org.junit.Test;
public class Demo02Junit {
public void test01(){
System.out.println("test01");
}
//报错:java.lang.Exception: Method test02() should be public
//@Test
protected void test02(){
System.out.println("test02");
}
//报错:java.lang.Exception: Method test03() should be void
//@Test
public int test03(){
System.out.println("test03");
return 0;
}
//报错:java.lang.Exception: Method test04 should have no parameters
@Test
public void test04(int a){
System.out.println("test04");
}
}
和Junit单元测试相关的注解
- @Test,用于修饰需要执行的测试方法
- @Before,修饰的方法会在测试方法之前被自动执行(一般可以用于获取资源)
- @After,修饰的方法会在测试方法执行之后自动被执行(一般用于释放资源)
注意:
1.@Before和@After注解修饰的方法,不能单独执行
2.@Before和@After注解修饰的方法,会自动在每一个@Test修饰的方法前后执行。所以,我们可以把通用的一些东西写在这个里面。(这两个注释左侧没有绿色的三角,即不能单独的执行)
举例:
package com.ccc.demo01Junit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class Demo03Junit {
@Test
public void test01(){
System.out.println("test01方法");
}
@Test
public void test02(){
System.out.println("test02方法");
}
@Test
public void test03(){
System.out.println("test03方法");
}
@Before
public void before(){
System.out.println("before方法");
}
@After
public void after(){
System.out.println("after方法");
}
}
打印结果:每执行一次@Test,就都要执行一次@Before(在前)和@After(在后)
before方法
test01方法
after方法
before方法
test02方法
after方法
before方法
test03方法
after方法