Java——JUnit单元测试的使用
一、概述
Junit是java 语言编写的第三方单元测试框架(工具类)
二、作用
用来“单元测试”,针对某个普通方法,可以像main方法一样独立运行,它专门用于测试某个方法
三、使用步骤
1.下载JUnit的jar包
2.拷贝JUnit的jar包到模块下的lib文件夹下,并添加到classpath中
3.编写测试方法
4.在测试方法上写一个注解:@Test
执行测试方法:
1.选中方法名称 --> 右键 ---> 选中执行:只执行选中的测试方法
2.选中类名 --> 右键 ---> 选中执行:执行该类中所有的测试方法
3.选中模块 --> 右键 ---> 选中执行all test:执行该模块下所有的测试方法
如何查看测试结果:
1.红色:表示测试失败
2.绿色:表示测试通过
四、代码演示以及注意事项
public class Test {
public static void main (String[] args) {
}
@org.junit.Test
public void show1(){
System.out.println("show1方法正在执行");
}
@org.junit.Test
public void show2(){
System.out.println("show2方法正在执行");
}
}
注意事项:
1.测试方法必须使用public权限修饰,Method show() should be public
2.测试方法不能有返回值,返回值类型只能写void Method show1() should be void
3.测试方法不能有参数,必须是无参,Method show should have no parameters
4.测试方法,声明一定需要使用@Test注解,否则不识别
五、Junit单元测试的其他注解
- @Before:用来修饰方法,该方法会在每一个测试方法之前先执行一次
- @After:用来修饰方法,该方法会在每一个测试方法之后再执行一次
- @BeforeClass:用来修饰静态方法,该方法会在所有测试方法之前执行一次,且仅仅只执行一次
- @AfterClass:用来修静态方法,该方法会再测试方法之后执行一次,且仅仅只执行一次
代码演示:
public class Test {
public static void main (String[] args) {
}
@org.junit.Test
public void one(){
System.out.println("one方法执行了");
}
@AfterClass
public static void two(){
System.out.println("two方法执行了");
}
@org.junit.Test
public void three(){
System.out.println("three方法执行了");
}
@org.junit.Test
public void four(){
System.out.println("four方法执行了");
}
@org.junit.Test
public void five(){
System.out.println("five方法执行了");
}
}
这里我们运行five方法,two方法会在five测试方法之后再执行一次,简单的演示一个,演示结果较多,只是示范一下,可以自己操作一下,特别简单。
六、JUnit断言
概述:
预先判断某个条件一定成立,如果条件不成立,则直接报错
关键字:
Assert类中的assertEquals()方法
需求代码演示:
public class Test {
public static void main (String[] args) {
}
@org.junit.Test
public void show(){
int sum = sum(10, 20);
/*
* 那么,我断言,sum的值一定是20,返回的是void
* - public static void assertEquals(long expected, long actual)
* 第一个参数:预测的值
* 第二个参数:实际的值
* 如果结果正确,程序继续执行,或者测试成功
* 如果结果失败,抛出异常:java.lang.AssertionError,测试失败
* */
Assert.assertEquals(20,sum); // 断言成功,继续执行,断言失败,抛异常
System.out.println("sum的值为:" + sum);
}
// 虽然代码没有问题,但是逻辑错误了看方法以为是加法,其实逻辑里写的是乘法
public int sum(int num1,int num2){
return num1 * num2;
}
}