单元测试初识-1
来源:互联网 发布:人工智能软件 编辑:程序博客网 时间:2024/06/14 03:42
测试驱动开发(TDD),呵呵,在现行的项目中好像走不通。一来时间紧,项目质量是排在按期完工之后的。二来三五个人,几台晒羊的电脑,需要完成设计,UI,编码,后期的测试,根本无法做到敏捷的测试驱动开发。因此,我们需要重新的去反思和定位,junit能给我们带来什么。
在junit中,是通过Assert断言来判断测试成败的,就是说一段测试代码后,通过Assert一个equals,或者Assert一个NotNull就判定了测试是否返回绿条了。貌似跟软件测试的“黑盒”思想同源。
在javaEE项目中,通常会有很多封装的方法,又比如n个数据源的连接的try-catch代码,这些可以独立出来的模块需要保持稳定,以给其他模块提供稳定的支撑。比如前几天LDAP服务器挂了,导致邮件发送不出去,而try-catch块只能抛出addNode-Error: LDAPException这么一个异常信息,这个信息起码对应了4种以上可能。最后与其他模块的人联调,与linux服务器SA联调,排除了大半天才找到原来是服务器连接失败。。。重启一把服务器就搞定,根本与代码无关。
下面就是LDAP增加一个节点的操作代码(抛LDAPException异常有好几个可能,其中就包括服务器连接失败)
boolean result = false;
LDAPConnection lc = new LDAPConnection();
try {
// connect to the server
lc.connect(ldapHost, ldapPort);
// authenticate to the server
lc.bind(ldapVersion, loginDN, password.getBytes("UTF8"));
lc.add(newEntry);
logger.debug(" Added object: " + newEntry.getDN()
+ " successfully.");
result = true;
// disconnect with the server
lc.disconnect();
return result;
} catch (LDAPException e) {
logger.error("addNode-Error: LDAPException");
return result==true?true:false;
} catch (UnsupportedEncodingException e) {
logger.error("addNode-Error: UnsupportedEncodingException");
return result;
}
将其中的服务器连接模块拿出来,做个junit测试:
import org.junit.Test;
import com.novell.ldap.LDAPConnection;
import junit.framework.Assert;
public class LDAPTest {
private static final int ldapPort = 389;
private static final int ldapVersion = LDAPConnection.LDAP_V3;
private static final String ldapHost = "192.168.1.92";
private static final String loginDN = "cn=root,o=cbc,c=CH";
private static final String password = "12345";
@Test
public void ConnectionTest() {
LDAPConnection lc = new LDAPConnection();
// connect to the server
try {
lc.connect(ldapHost, ldapPort);
// authenticate to the server
lc.bind(ldapVersion, loginDN, password.getBytes("UTF8"));
//Assert.assertTrue(true);
fail("connect error");
} catch (Exception e) {
Assert.assertNull(e);
}
}
}
测试代码只包含了连接服务器逻辑,并去捕获连接过程中的异常的根类Exception。通过这么一个稳定的单元测试模块,使得在LDAP的CRUD等操作中一旦出现异常,我就可以很快的找出是不是因为服务器连接挂了而引起的,不用急着去检查是不是由于其他代码修改引发的bug。
因此,给项目的一些基石,比如某个排序算法,远程接口调用,数据库连接,以及调用别人的service的地方 编写一个junit测试类,将极大的方便后续扩展时候的测试,也方便出bug能迅速的排除一些故障。
- 单元测试初识-1
- 初识单元测试
- 初识单元测试
- 单元测试——初识
- 初识Junit(单元测试)
- ios 单元测试初识(XCTestCase)
- Struts2之Servlet API及单元测试初识
- GXPT(四)——初识单元测试
- [C++]初识google test--单元测试神器
- 初识IntelliJ IDEA下JUnit单元测试
- 初识IntelliJ IDEA下JUnit单元测试
- 单元测试1
- 单元测试1-为什么需要单元测试
- 1、初识
- iOS 单元测试1- 单元测试框架选型
- 单元测试全攻略(1)
- 单元测试实践小结1
- 实用单元测试技术(1)
- 手工編譯
- ThinkPad -- 如何启用/禁用内嵌数字键盘
- [转载]游戲資源設計與修改
- Win2K下驱动程序的动态加载
- acdsee 10 注册号和软件下载链接
- 单元测试初识-1
- CIO 宝典——50条成功秘笈(上)
- OFP里的铁锹
- How to change the dbo
- TPerlRegEx中匹配中文标点符号
- CIO 宝典——50条成功秘笈(下)
- js 将颜色十改变成十六
- 一个上网的恐怖分子不是好恐怖分子
- epoll实现的net_echo程序