这里是IT修真院分享课,今天要分享的主题是
【java单元测试】
一、什么是单元测试
单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。
比如对方法testOne(double a),我们可以编写出以下几个测试用例:
输入正数,比如1、1.2、0.99,期待返回值与输入相同;
输入负数,比如-1、-1.2、-0.99,期待返回值与输入相反;
输入0,期待返回0;
输入非数值类型,比如""、[]、{},期待抛出Error。
把上面的测试用例放到一个测试模块里,就是一个完整的单元测试。
如果单元测试通过,说明我们测试的这个函数能够正常工作。如果单元测试不通过,要么函数有bug,要么测试条件输入不正确,总之,需要修复使单元测试能够通过。
单元测试通过后有什么意义呢?如果我们对abs()函数代码做了修改,只需要再跑一遍单元测试,如果通过,说明我们的修改不会对abs()函数原有的行为造成影响,如果测试不通过,说明我们的修改与原有行为不一致,要么修改代码,要么修改测试。
这种以测试为驱动的开发模式最大的好处就是确保一个程序模块的行为符合我们设计的测试用例。在将来修改的时候,可以极大程度地保证该模块行为仍然是正确的。
单元测试还具有一下几个好处:
能够协助程序员尽快找到BUG的具体位置
能够让程序员对自己的程序更有自信
能够让程序员在提交项目之前就将代码变的更加健壮
能够协助程序员更好的进行开发
能够向其他程序员展现你的程序该如何调用
能够让项目主管更了解系统的当前状况
二、单元测试的流程
1、准备测试类
新建一个测试类,这点可以依靠编程工具的插件自动生成测试类(比如IDEA的JUnit Generator),也可以自己手动建立。
2、执行测试的业务
在测试类中引入你所需要的类与包,测试时可以使用junit jar包辅助也可以不用,直接main方法运行要测试的代码、业务。
3、验证测试的数据
通过一些可以做日志的jar包(比如log4j),在各个测试的数据前后将其输出出来,方便观察测试过程中代码的运行情况.也可以直接system.out.println(),自己设置一下方便观看的输出格式。
代码试例:
使用main方法加system.out.println()的一个小例子
public static void main (String[] args) throws Exception {
Map keyMap = RSAUtils.createKeys(1024);
String publicKey = keyMap.get("publicKey");
String privateKey = keyMap.get("privateKey");
System.out.println("公钥: \n\r" + publicKey);
System.out.println("私钥: \n\r" + privateKey);
System.out.println("公钥加密——私钥解密");
String str = "sadhjaksdjaf";
System.out.println("\r明文:\r\n" + str);
System.out.println("\r明文大小:\r\n" + str.getBytes().length);
String encodedData = RSAUtils.publicEncrypt(str, RSAUtils.getPublicKey(publicKey));
System.out.println("密文:\r\n" + encodedData);
String decodedData = RSAUtils.privateDecrypt(encodedData, RSAUtils.getPrivateKey(privateKey));
System.out.println("解密后文字: \r\n" + decodedData);
复制代码
【更多内容,欢迎加入交流群565763832与大家一起讨论交流】
【这里是技能树·IT修真院:IT修真院官网,初学者转行到互联网的聚集地】