`
sw1982
  • 浏览: 511319 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多

     测试驱动开发(TDD),呵呵,在现行的项目中好像走不通。一来时间紧,项目质量是排在按期完工之后的。二来三五个人,几台晒羊的电脑,需要完成设计,UI,编码,后期的测试,根本无法做到敏捷的测试驱动开发。因此,我们需要重新的去反思和定位,junit能给我们带来什么。

     在junit中,是通过Assert断言来判断测试成败的,就是说一段测试代码后,通过Assert一个equals,或者Assert一个NotNull就判定了测试是否返回绿条了。貌似跟软件测试的“黑盒”思想同源。

     在javaEE项目中,通常会有很多封装的方法,又比如n个数据源的连接的try-catch代码,这些可以独立出来的模块需要保持稳定,以给其他模块提供稳定的支撑。比如前几天LDAP服务器挂了,导致邮件发送不出去,而try-catch块只能抛出addNode-Error:  LDAPException这么一个异常信息,这个信息起码对应了4种以上可能。最后与其他模块的人联调,与linux服务器SA联调,排除了大半天才找到原来是服务器连接失败。。。重启一把服务器就搞定,根本与代码无关。

下面就是LDAP增加一个节点的操作代码(抛LDAPException异常有好几个可能,其中就包括服务器连接失败)

    public static boolean addNode(LDAPEntry newEntry)    ...{
        
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 static org.junit.Assert.fail;

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能迅速的排除一些故障。

分享到:
评论

相关推荐

    Struts2之Servlet API及单元测试初识案例struts005

    在这个“Struts2之Servlet API及单元测试初识案例struts005”中,我们将探讨Struts2如何与Servlet API结合使用,以及如何进行单元测试。 Servlet API是Java EE平台的核心部分,用于构建动态Web应用程序。Struts2...

    第一单元+初识数据与计算++单元测试+2022-2023学年+教科版(2019)高中信息技术必修1

    第一单元+初识数据与计算++单元测试+2022-2023学年+教科版(2019)高中信息技术必修1

    JUnit--单元测试工具

    初识JUnit单元测试框架 单元测试工具 示例:在Eclipse中使用JUnit4进行单元测试 JUnit 框架 JUnit几个核心类及接口 Assert 超类所提供的8个核心方法 TestCase提供了10个自己的方法 JUnit4.X 版本与以前版本的区别

    初识Spring框架-资料.rar

    Spring Test模块提供了对Spring应用进行单元测试和集成测试的支持,包括测试上下文管理、模拟对象等工具,便于进行测试驱动开发。 10. **Spring Cloud**: Spring Cloud是基于Spring Boot实现的云应用开发工具...

    初识Spring

    7. **单元测试和集成测试**:Spring支持JUnit进行单元测试,使用Mockito模拟对象,以及Spring Test和Spring Boot Test进行集成测试,确保代码质量。 8. **WebContent目录**:在传统的Java Web项目中,`WebContent`...

    Web UI自动化测试总结以及unittest框架初识.zip

    unittest是Python内置的一个单元测试框架,适用于编写小型到中型的测试用例。unittest提供了丰富的断言方法,如assertEqual、assertTrue、assertFalse等,用于验证代码的行为是否符合预期。此外,unittest还支持测试...

    第01章 初识Cocos2d-X.zip

    这个“第01章 初识Cocos2d-X.zip”压缩包内容可能包含了对Cocos2d-X的基础介绍和入门教程,帮助初学者了解并开始使用这个框架。 1. **Cocos2d-X概述** Cocos2d-X是Cocos2d-x项目的一部分,由C++编写,支持iOS、...

    软件测试入门

    - **单元测试**: 针对单一模块进行的测试。 - **集成测试**: 检查多个模块间的接口是否正常工作。 - **系统测试**: 验证整个系统的功能是否符合需求。 - **验收测试**: 最终用户参与的测试,确保软件满足业务需求。 ...

    CppUnit测试框架入门

    CppUnit是一种广泛应用于C++项目的单元测试框架,它可以帮助开发者确保代码的质量和稳定性。本章节将介绍CppUnit源代码的主要组成部分。 - **源码获取**:首先,你需要从官方网站 ...

    《Python编程基础与自动化测试》读书笔记模板.pptx

    第三部分是单元测试,包括单元测试介绍、测试框架的意义、unittest初探和进阶等内容。第四部分是接口测试基础,包括接口测试简介、Ajax接口与Web动静分离、Restful接口等内容。 在学习过程中,读者可以通过实践快速...

    Java开发学习(一)----初识Spring及其核心概念.doc

    5. **Test层**:Spring支持集成JUnit进行单元测试和集成测试,简化测试流程。 接下来,我们聚焦Spring的核心概念——IOC(控制反转)和DI(依赖注入)。 在传统的软件开发中,对象通常自行创建依赖的对象,导致高...

    2016春九年级化学下册第5章初识酸和碱单元综合测试1无答案新版沪教版.doc

    1. 酸和碱的基本概念: 酸是指在水中能够电离出氢离子(H+)的化合物,如题目中的硝酸(HNO3)、硫酸(H2SO4)。碱则是指在水中能够电离出氢氧根离子(OH-)的化合物,如一水合氨(NH3·H2O)。酸性氧化物如二氧化硫...

    高中语文必修第一二单元测试题.doc

    综上所述,这份高中语文必修第一二单元测试题主要考察了学生的语文基础知识、文学作品理解、古典诗词的掌握、文言文词汇解析以及对中国传统文化的认知。这些知识点对于提高学生的语言表达能力、文学鉴赏能力和传统...

    Maven3之初识

    - `mvn test` 运行单元测试。 - `mvn package` 打包项目,如JAR或WAR文件。 - `mvn install` 将打包好的文件安装到本地仓库,供其他项目使用。 - `mvn deploy` 发布项目到远程仓库。 - **项目结构** Maven遵循...

    《移动应用软件测试项目教程》读书笔记模板.pptx

    任务一:单元测试,学习如何进行单元测试。 任务二:冒烟测试,学习如何进行冒烟测试。 任务三:功能与性能检查,学习如何进行功能与性能检查。 任务四: UI 测试,学习如何进行 UI 测试。 任务五:其他测试,学习...

    初识easyMack

    EasyMock是一款强大的Java模拟框架,它允许开发者在单元测试中创建和控制对象的行为。这个工具在软件开发过程中起到了至关重要的作用,因为它可以帮助程序员在不依赖实际环境的情况下测试代码,提高测试效率并确保...

    初识JUnit

    JUnit是Java编程语言中最常用的单元测试框架之一,它使得开发者能够编写可自动化执行的测试用例,以确保代码的质量和功能的正确性。本篇文章将深入浅出地介绍JUnit的基本概念、使用方法以及其在软件开发中的重要性。...

    2016春九年级化学下册第5章初识酸和碱单元综合测试2无答案新版沪教版.doc

    1. 化学变化与物理变化的区分:化学变化是指物质发生化学反应,形成新的物质,如天然气燃烧。而物理变化只是物质状态的改变,不涉及新物质的生成,如冰融化成水。 2. 分子的性质:在物理变化中,分子本身不变,但...

Global site tag (gtag.js) - Google Analytics