单元测试

敏捷的反馈

余生长醉 提交于 2019-11-27 22:24:22
敏捷反馈 守护天使 Coding feedback. 为了应对代码的变化,你需要持续获得代码健康状态的反馈:他是在做你期望的事情吗?最近一次修改有没有无意中破坏了什么功能?为了确保所有功能都能正常工作,就需要自动化单元测试。 一些开发者会对“测试”这个词有意见,应把它看作是一个代码技术。用代码来检查变量的具体值,而不是手工检查那些感兴趣的变量。 只要有了单元测试,就让到他们自动运行,也就是每次编译或者构建代码的时候,就运行一次测试。把单元测试的结果看作是和编译器一样——如果测试没有通过,那就像变异没有通过一样糟糕。 接下来就是在后台假设一个 构建机器 ,不断获取最新版本的源代码,然后编译代码,并运行单元测试,如果有任何错误它会让你及时知道,这是最容易修复也是成本最低的时候。 具体技巧 单元测试是优质股,值得投资。但一些简单的属性访问方法或者价值不大的方法,是不值得花费时间进行测试的。 人们不编写单元测试的很多借口都是因为代码中的设计缺陷。通常,抗议越强烈,就说明设计越糟糕。 单元测试只有在达到一定测试覆盖率的时候,才能真正地发挥作用。你可以使用一些测试覆盖率工具,大致了解自己的单元测试的覆盖情况。 不是测试越多质量就会越高,测试必须要有效。如果测试无法发现任何问题,也许它们就是没有测试对路。 先用它再实现它 我们的业务是要创造出能调用的API和可以使用的接口。这就是说

Spring Boot Controller单元测试

喜欢而已 提交于 2019-11-27 21:12:53
一、创建Controller 一个方法是用传统IO来下载文件,一个是NIO下载文件 @Controller public class FileController { private Logger log = LoggerFactory.getLogger(FileController.class); @RequestMapping(value="/download/oldio}", method = RequestMethod.GET) public void download(HttpServletRequest request, HttpServletResponse response,String fileName) throws IOException{ String folder = "C://Users/xxx/Downloads/0714"; File file = new File(folder, fileName); if(file.exists()){ response.setContentType("MimeType"); response.addHeader("Content-Disposition","attachment;filename=" +fileName); response.setContentLength((int)file.length(

【Flask教程13】蓝图&单元测试

主宰稳场 提交于 2019-11-27 20:56:40
蓝图&单元测试 蓝图 单元测试 学习目标 能够使用代码实现蓝图对项目进行模块化 能够说出断言的作用 能够说出实现单元测试步骤 能够说出单元测试所执行方法的定义规则 Blueprint 模块化 随着flask程序越来越复杂,我们需要对程序进行模块化的处理,之前学习过python的模块化管理,于是针对一个简单的flask程序进行模块化处理 举例来说: 我们有一个博客程序,前台界面需要的路由为:首页,列表,详情等页面 源程序app.py文件: from flask import Flask app=Flask(__name__) @app.route('/') def index(): return 'index' @app.route('/list') def list(): return 'list' @app.route('/detail') def detail(): return 'detail' if __name__=='__main__': app.run() 如果博主需要编辑博客,要进入后台进行处理:后台主页,编辑,创建,发布博客 改进后程序: from flask import Flask app=Flask(__name__) @app.route('/') def index(): return 'index' @app.route('/list') def

单元测试系列二:单元测试如何测试异常与超时

吃可爱长大的小学妹 提交于 2019-11-27 19:21:42
一、 测试异常 1. 使用@test的expected属性测试异常 // 第一种方式, 使用expected属性 @Test (expected = FileNotFoundException.class) public void usingExpected () throws FileNotFoundException { // 不会抛出FileNotFoundException的代码写在上面 new FileInputStream( "不存在的文件路径" ); } 2. 使用try/catch,fail的方式测试异常 // 第二种方式, 使用try/catch和fail方法 @Test public void usingTryCatchAndFail () { // 其他代码 try { new FileInputStream( "不存在的文件路径" ); fail( "前面的代码已经抛出FileNotFoundException!" ); } catch (FileNotFoundException e) { assertTrue(e.getMessage().contains( "不存在的文件路径" )); } } 3. 使用@Rule,expectedException的方式测试异常 // 第三种方式, 使用ExpectedException规则 @Rule public

单元测试简单小结

☆樱花仙子☆ 提交于 2019-11-27 19:21:23
对于一些有经验的开发觉得写单元测试是非常有必要的,也仅仅是觉得,可能写的不是太多,但是一些新手代码都写不顺的让他们再去写单元测试,估计他们的内心是相当崩溃的,但是单元测试时真的有必要,而且对自己的代码质量以及编码能力都是有提高的。 一、什么是单元测试? 单元测试是针对程序的最小单元来进行正确性检验的测试工作,程序单元就是应用的最小可测试部件,一个单元可能是单个程序,类,对象,方法等。 二、使用单元测试有什么好处? 1.减少bug 通过运行单元测试可以直接测试各个功能的正确性,有bug可以直接发现并解决,如果要等到跟其他的功能对接,进行连贯测试,测试比较麻烦,而且bug不能及早的发现并解决 2.快速定位bug 如果是web项目的某一个功能,平常我们定位bug可能是页面输入值,后台断点,一步一步的需要bug位置,如果有编写单元测试,则可以直接修改数据,运行单元测试即可,快速有限 3.提高代码质量 如果每一个部件都是完美的,那么组合起来肯定也是完美的。整体代码质量就得到了保障 4.减少调试时间 当不知问题所在的时候,可能需要各种调试与运行,而如果所有的都有编写单元测试,那么可以直接运行单元测试,就能定位问题所在位置。 三、单元测试的一些注意事项 测试方法必须使用@Test修饰 测试方法必须使用public void进行修饰,不能带参数 测试代码的包应该和被测试的代码包结构保持一致

何时需要单元测试以及C++单元测试工具选择

纵然是瞬间 提交于 2019-11-27 19:21:07
一、如果我们遇到下面情况,就需要单元测试(框架): 测试代码没有很好地维护而废弃,再次需要测试时还需要重写; 投入太多的精力,找 bug,而新的代码仍然会出现类似 bug; 写完代码,心里没底,是否有大量 bug 等待自己; 新修改的代码不知道是否影响其他部分代码; 由于牵扯太多,导致不敢进行修改代码; …… 二、C++单元测试工具选择 从 Java 的 JUnit 移植出 CppUnit 之后,又出现了一系列的 CppUnit 的衍生套件, 但是易用性都不太好,且有一些“顽疾”,最终都被作者遗弃了,停止了维护更新。 相对而言,出现较晚的 xUnit 衍生品 googletest 有诸多优点: 不需要再像以前那样进行麻烦的声明、定义以及注册了,一切就像调用函数那么简单; 适用诸多平台 (Linux, Mac OS X, Windows, Cygwin, Windows CE, and Symbian); 更多功能、更加可定制化; 显示信息更加丰富全面 …… 参考资料: 便利的开发工具 CppUnit 快速使用指南 ; C/C++单元测试框架的选择(CppUTest vs. CppUnit vs. CppUnitLite vs. CppTest vs. GoogleTest vs. CxxTest vs. CUnit) ; Google 开源了自己的 C++ 单元测试框架 :

软件测试笔记之单元测试

只愿长相守 提交于 2019-11-27 19:20:50
解决错误 开发人员 发现错误 测试人员 软件不可能没有任何bug 测试人员是极其重要的 单元测试的定义: 单元测试:(模块测试 unit testing) 是针对程序模块(软件设计的最小单元)来进行正确检验的测试工作 单元测试的目标: 信息的正确流入和流出单元 工作中,内部数据的完整性 验证设置的边界值是否正确工作 单元是否达到一个覆盖率 总而言之,验证代码的功能、逻辑是否正确 单元测试的必要性: 尽早介入越好 编写单元测试 : 学会使用断言(assertion) 最大化测试覆盖率 避免重复的测试代码 不要依赖测试方法的执行顺序 来源: CSDN 作者: 爱跳的小海豚 链接: https://blog.csdn.net/u013761415/article/details/51519287

单元测试规范

ぐ巨炮叔叔 提交于 2019-11-27 19:20:34
单元测试规范 单元测试(Unit Test),下方统一简称为 UT。 一、Java UT 规范 技术选型 Java UT 框架选型:TestNG 选型参考: http://www.ibm.com/developerworks/cn/java/j-cq08296/ Java UT 的 Mock 框架选型:JMockit 选型参考: http://jmockit.org/ http://stackoverflow.com/questions/4105592/comparison-between-mockito-vs-jmockit-why-is-mockito-voted-better-than-jmockit 文件、类与方法命名规范 术语定义: 源文件(SRC-PATHNAME):需要做 UT 的逻辑代码的代码文件 UT文件(UT-PATHNAME):为源文件写的 UT 代码的代码文件 源类(SRC-CLASSNAME):源文件中的类 UT类(UT-CLASSNAME):UT文件中的类 源方法(SRC-METHOD):源类中定义的方法/函数 UT方法(UT-METHOD):UT类中定义的方法/函数 源文件必须存放在 SRC-ROOT 目录: SRC-ROOT = "src/main/java" UT文件必须存放在 UT-ROOT 目录: UT-ROOT = "src/test

JDBC、单元测试、DAO模式

浪子不回头ぞ 提交于 2019-11-27 18:23:57
JDBC简介 1、什么是JDBC?    JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API(工具)。JDBC是Java访问数据库的标准规范。   规范:在java中的直接体现是接口   作用:为不同关系型数据库提供统一的访问,由一组用java语言编写的接口和工具类组成,由各大数据库厂商实现对应接口 2、连接数据库时要先加载驱动   什么是驱动?   两个设备要进行通信时,需要满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。    Java和数据库要想进行链接,必须提前规定一些数据格式,格式由数据库厂商实现。   mysql连接工具下载地址: https://dev.mysql.com/downloads/connector/j/ 3、J DBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。 JDBC连接详解 1.通过JDBC连接数据库需要五步 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;

Java程序单元测试工具对比——Parasoft Jtest与Junit

主宰稳场 提交于 2019-11-27 16:51:13
Web应用程序开发中,面向对象的Java语言占了不少的比重。对于Java应用程序的测试方法或方式多种多样,比较典型的是程序员自己来完成程序测试中的一个部分——单元测试。 之前,慧都资讯提到 单元测试是程序整体测试的基础 ,这是无可厚非的。如何完善单元测试,除了程序员自身对编程的理解,借助工具是很有必要的,在某些时候甚至是必须的。 今天将为Java程序员介绍目前最火的2款单元测试工具,单元测试框架并能自由扩展的Junit与单元测试功能强大,并集全部测试功能为一体的Parasoft Jtest。 Junit常用于极限编程与重构,在编程过程中就能实现编程、测试、修改,从而减少回归错误。因此Junit单元测试框架用于测试期望结果的Assertion、共同数据、组织和运行测试套件甚至包括图形和文本的测试。 Junit只所以如此受欢迎,还要取决于它对Eclipse的集成。这就使Java程序测试的基础,单元测试可以在熟悉编码内容的程序员手中得到完成。 Junit唯一争议的地方便是需要自己编辑测试用例,对于编写测试代码。有的程序员认为是麻烦,有的则认为是解决麻烦,这个因人而已。但测试代码的编写,有着自己的规范。如(测试代码方式test开头、使用Assertion、测试用例覆盖类和功能等。) Parasoft Jtest是一个全能的测试工具,在单元测试中,通常使用测试套件与回顾测试。值得注意的是