assert断言
1.assert简介
编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。断言表示为一些布尔表达式,是用于对程序进行调试的,是对于执行结构的判断,而不是对于业务流程的判断。
相当于一个if ()语句,如果满足断言的,执行程序,如果不满足,则抛错误。
使用情形:断言适用复杂的调式过程。
特性:首先assert需要自行开启(jvm断言默认是关闭的,如何开启等会讲解),然后assert不具有继承性(父类禁止断言,子类可以开启断言)
2.assert使用
1.如何判断自己是否开启断言
原理:如果开启断言,则会调用断言语句。
public static void main(String[] args) {
boolean isOk = false;
assert isOk = true;//如果开启则会调用assert System.out.println(isOk);//返回false,表示assert未开启}
2.如何开启断言
(1)首先打开Run->Run Configurations
(2)打开Argument并设置-ea(打开断言:-ea 关闭断言:-da)
(3)进行测试,如果返回true就表示成功了
3.使用的两种形式
语法1:assert expression;
//expression代表一个布尔类型的表达式,如果为真,就继续正常运行,如果为假,程序退出
语法2:assert expression1 : expression2;
//expression1是一个布尔表达式,expression2是一个基本类型或者Object类型,如果expression1为真,则程序忽略expression2继续运行;如果expression1为假,则运行expression2,然后退出程序。
(1)语法1:assert expression;
public class AssertionDemo { static int i = 5;
public static void main(String[] args) {
assert i==6;
System.out.println("如果断言正常,我就被打印"); } }
结果:
(2)语法2: assert expression1 : expression2;
public class AssertionDemo {
public static void main(String[] args) {
int i = 3;
switch (i) {
case 1: System.out.println("正常"); break;
case 2: System.out.println("正常"); break;
case 5: System.out.println("正常"); break;
default: assert false:"i的值无效"; //如果i的值不是你想要的,程序就警告退出
}
System.out.println("如果断言正常,我就被打印"); } }
4.断言抛出
断言抛出的是一个系统级错误,而不是异常
boolean isRight = 1 > 2;
try {assert isRight:"程序错误";
System.out.println("程序正常");
} catch (AssertionError e) {
//e.printStackTrace(e);//该行编译错误:提示没有异常需要抛出
System.out.println(e.getMessage());
}
较常使用:
1.assertEqual(a,b,[msg='测试失败时打印的信息']): 断言a和b是否相等,相等则测试用例通过。
2.assertNotEqual(a,b,[msg='测试失败时打印的信息']): 断言a和b是否相等,不相等则测试用例通过。
3.assertTrue(x,[msg='测试失败时打印的信息']): 断言x是否True,是True则测试用例通过。
4.assertFalse(x,[msg='测试失败时打印的信息']): 断言x是否False,是False则测试用例通过。
5.assertIs(a,b,[msg='测试失败时打印的信息']): 断言a是否是b,是则测试用例通过。
6.assertNotIs(a,b,[msg='测试失败时打印的信息']): 断言a是否是b,不是则测试用例通过。
7.assertIsNone(x,[msg='测试失败时打印的信息']): 断言x是否None,是None则测试用例通过。
8.assertIsNotNone(x,[msg='测试失败时打印的信息']): 断言x是否None,不是None则测试用例通过。
9.assertIn(a,b,[msg='测试失败时打印的信息']): 断言a是否在b中,在b中则测试用例通过。
10.assertNotIn(a,b,[msg='测试失败时打印的信息']): 断言a是否在b中,不在b中则测试用例通过。
11.assertIsInstance(a,b,[msg='测试失败时打印的信息']): 断言a是是b的一个实例,是则测试用例通过。
12.assertNotIsInstance(a,b,[msg='测试失败时打印的信息']): 断言a是是b的一个实例,不是则测试用例通过。