0 0

如何写出能让人测试的代码10

我有一个方法,伪代码如下:

    public void calculate(int aDBKey)
    {
         Data aData = DBManager.lookup(aDBKey);//从数据库取数据
           Data aCalculatedData = operationOnData(aData);
         DBManager.save(aCalculatedData);      //保存数据库
    }

    我有DBManager的Mock对象,如何写测试来验证此类代码的正确性呢? 我考虑过将数据库取代码的逻辑移出去,这样我测试的代码就和数据库的逻辑无关了,是不是该这么做??
问题补充
daquan198163 写道
用jmockit可以mock静态方法,见http://ginge.iteye.com/blog/841185

或者重构一下,不要用静态方法,注入一个DBManager实例然后调用非静态方法


怎么个注入法?难道写个利用Mock对象替代方法内部对象的同样逻辑的方法,不能这么弄吧?

问题补充:<div class="quote_title">beneo 写道</div><div class="quote_div">我一直都在用easymock,来mock你的行为,很简单也很实用</div> <br />我是不知道如何测试可以说明主要这段代码是正确的。
2010年12月30日 10:27

4个答案 按时间排序 按投票排序

0 0

 public void calculate(int aDBKey)  
 {  
     Data aData = DBManager.lookup(aDBKey);//从数据库取数据  
     Data aCalculatedData = operationOnData(aData);  
     DBManager.save(aCalculatedData);      //保存数据库  
 }


你可以变成

 public void calculate(int aDBKey)  
 {  
     Data aData = lookupFromDBmanager(aDBKey)/从数据库取数据  
     Data aCalculatedData = operationOnData(aData);  
     save(aData, aCalculatedData);      //保存数据库  
 }
 private Data lookupFromDBmanager(int aDBKey) {
 }

 private Save (Date date, int result) {
 }




2010年12月30日 13:40
0 0

移去数据库逻辑也是可行的吧,数据库的逻辑可以在做单元测试的时候来进行验证,这样保证了真实环境下数据库逻辑也是准确的。

2010年12月30日 10:50
0 0

我一直都在用easymock,来mock你的行为,很简单也很实用

2010年12月30日 10:36
0 0

用jmockit可以mock静态方法,见http://ginge.iteye.com/blog/841185

或者重构一下,不要用静态方法,注入一个DBManager实例然后调用非静态方法

2010年12月30日 10:27

相关推荐

    测试代码 C语言的测试代码

    测试代码的主要目的是验证程序的功能是否按照预期工作,并找出可能存在的错误或缺陷。C语言中的测试通常包括单元测试、集成测试和系统测试等阶段。单元测试关注的是程序中的最小可测试单元,如函数或方法,确保它们...

    vtk 5.8 源码包括测试代码,示例代码

    VTK,全称为 Visualization Toolkit,是一个开源的三维可视化软件库,广泛用于科学...通过深入研究源码、测试代码和示例,你可以掌握数据可视化的核心技术,从而在科研、工程或其他领域创建出令人惊叹的可视化效果。

    数字识别测试代码_手写体测试代码_

    在IT领域,尤其是在机器学习和计算机视觉中,"数字识别测试代码_手写体测试代码_"这个主题涉及到了几个关键的知识点。手写体识别是一种技术,它允许计算机系统理解和解析人类手写的数字、字母或其他字符。这项技术...

    如何编出健壮的代码,java编程30条规则

    这条规则鼓励开发者书写测试代码,以确保类的正确性和可靠性。 规则 4: 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。方法应简明扼要,长度很大时可考虑分割成较短的几个方法。这条...

    新建文本文档 (2)_测试代码_

    在IT行业中,测试代码是软件开发过程中的关键环节,它确保了程序的稳定性和功能的正确性。"新建文本文档 (2)_测试代码_"这个标题暗示我们将探讨与编写和执行测试代码相关的主题。测试代码通常包括单元测试、集成测试...

    没写完的代码

    4. **调试技巧**:在处理“没写完的代码”时,使用断点、日志记录、单元测试等调试技巧能有效定位问题。Arthas的命令如`trace`和`watch`可以动态追踪代码执行,帮助开发者了解代码实际运行路径。 5. **持续集成与...

    易语言测试写出文件速度源码,易语言测试文件写入速度

    这种测试代码在实际开发中有着广泛的应用,如文件备份、日志记录、大数据处理等场景。了解文件写入速度对于评估系统的存储性能,优化程序执行效率,以及选择合适的硬件配置都至关重要。 6. **注意事项**: 在进行...

    每天写出好代码的5个建议03

    总之,《每天写出好代码的5个建议03》通过简短的文字传达了提升代码质量的核心理念,即保证代码逻辑的正确性、增强代码的可读性和可维护性,以及持续学习和改进。这些原则适用于所有类型的软件开发项目,无论是个人...

    提高程序员面试代码质量

    因此,如何在面试时能写出高质量的代码,是很多程序员关心的问题。 代码的规范性 代码的规范性是面试官评价应聘者的重要标准之一。应聘者首先要把代码写得规范,才可以避免很多低级错误。如果代码写得不够规范,会...

    EB-SAM3U开发板测试代码

    《EB-SAM3U开发板测试代码详解》 在嵌入式系统开发中,硬件平台的选择和测试至关重要,其中EB-SAM3U开发板因其强大的功能和灵活性,被广泛应用于各种项目。本篇将深入探讨该开发板上的关键组件如ADC(模拟数字转换...

    c代码-测试测试测试

    总结来说,这个压缩包提供的"C代码-测试测试测试"是一个C语言的简单项目实例,包含一个源代码文件和一个说明文件。"main.c"是程序的核心,包含C语言的逻辑和功能实现,而"README.txt"则是对项目背景、使用方法及可能...

    通过代码获取邮箱联系人(126、163)

    - 在实际应用前,必须确保代码能正确运行。可以创建单元测试检查各个方法的功能,同时进行集成测试以确保整个流程的顺畅。 9. **安全考虑**: - 当处理用户敏感信息如邮箱账号时,必须确保安全。不要在代码中硬...

    矩阵运算代码

    (转置,求逆,求余子式,求行列式等等) 本来我也不想写这个东西,但是做作业需要... 本来这东西在网上遍地都是,不过我给下载了几个文件,结果还是...在压缩文件里,给出了测试的代码(这个写的就真的很乱了..)...

    网狐棋牌源代码之斗地主完整源代码

    9. **测试与调试**:源代码中应包含单元测试和集成测试,以确保各功能模块的正确性,同时调试工具和日志系统便于找出和修复问题。 通过学习这个斗地主完整源代码,开发者不仅可以了解游戏开发的基本流程,还能深入...

    LINUX下的eeprom读写测试程序

    6. **交流分享**:由于描述中提到“欢迎使用交流”,这可能意味着开发者鼓励用户共享使用经验、遇到的问题以及解决方案,这对于社区中的其他人来说是一份宝贵的资源。 在Linux环境下进行EEPROM的读写测试,不仅涉及...

    单元测试文档单元测试文档

    好的测试其实就是一个好的文档,这个类使用者往往可以通过查看这个类的测试代码了解它的功能。 4. JUnit 的应用 JUnit 是一个支持在 Java 代码中撰写单元测试的框架。程序设计师可以使用 JUnit 来撰写单元测试,并...

    软件测试速成,可以快速学习软件测试效果显著

    2. 测试驱动开发(TDD):先写测试,再编写能满足测试的代码。 3. 结对编程:两人一起编写和审查代码,提高代码质量和测试覆盖率。 通过软件测试速成课程,学习者将掌握以上关键概念和实践技巧,能够更有效地进行...

    测试思想和性能测试资料

    此外,Mockito等模拟框架可以帮助我们在孤立的环境中测试代码,避免依赖其他组件的影响。TDD(测试驱动开发)和BDD(行为驱动开发)是两种流行的开发模式,它们强调先写测试,再编写满足测试的代码,以确保软件功能...

    自己写的闹钟源代码

    标题中的“自己写的闹钟源代码”表明这是一个个人开发的软件项目,主要功能是实现闹钟功能。在描述中提到,这个闹钟程序不仅能在指定时间播放音乐,还包含两个不同的时间显示方式:一个自绘的时钟和一个LED数字时钟...

    STM32单片机人流量检测器设计程序代码.zip

    STM32单片机人流量检测器,这个是使用两个红外光电传感器来检测出、入的人数,每天统计到stm32的eeprom中,通过IIC的OLED显示屏进行实时人数显示,使用一个按键来交互查询近一个星期的人流量数值。同时具备da1302...

Global site tag (gtag.js) - Google Analytics