单元测试

使用moco单元测试

試著忘記壹切 提交于 2020-02-28 03:02:57
在项目中,除了查询数据库,还要调用外部的服务,这这时候我们在写单元测试的时候,会考虑怎么覆盖着一块代码: 1.封装一个方法,然后mock这个方法。 2.直接配置好调用的服务,测试的时候调用真实存在的服务。 3.起一个服务,mock这个调用的这个服务。 第一种方法虽然mock了这个方法,但是没有覆盖到调用远端的这个服务处理过程,比如序列化,contentType等等。 第二种方法过于依赖已经外部的服务,测试的失败的概率也是比较高的,也有点集成的意思,会把单元测试做的过重,并且不好维护。 第三种方法,可以配置协议启动,当方法调用的时候,实际调用我们mock的服务,也想过开发一个mock服务,我们配置需要调用的服务,返回格式内容,感觉这种适合给前端接口定义的时候用,不适合后端开发。 发现前人开发了moco( https://github.com/dreamhead/moco) 来实现第三种方法来做单元测试。有几种使用Moco的方法。一种是API,您可以在单元测试中使用它。另一个是独立运行Moco。当前,需要将所有配置都放在JSON文件中。 如果是maven项目,那么加入如下的依赖: 然后在junit的单元测试中,加入moco runner的服务,这里我使用作者git中的test描述,需要写一个配置文件,这里的request是请求的配置

浅谈单元测试

好久不见. 提交于 2020-02-27 14:28:28
单元测试或是最好的项目文档。 很早之前在学习使用Java做测试的时候,得到过一个神秘大佬的帮助,在一起聊过单元测试,基本结论就是:单元测试大概率没啥鸟用。 众所周知,自动化测试相比手动测试一个比较明显的特点就是见效慢,需要积累一定的时间所产生的的价值才能超过手动测试,这还是在比较理想的情况下。某些时候可能永远也超不过。而单元测试更甚,据大佬和吹牛逼的群聊中判断:好的单元测试代码大概是被测代码的2-3倍,这种工作量对于开发人员来讲是不可接受的。单元测试见效比自动化测试更慢,这一点也是大家的共识,甚至到不了见效的时候就黄了。 之前对单元测试进行过一些尝试,写过一点文章: Maven和Gradle中配置单元测试框架Spock Groovy单元测试框架spock基础功能Demo Groovy单元测试框架spock数据驱动Demo 人生苦短?试试Groovy进行单元测试 使用WireMock进行更好的集成测试 如何测试这个方法--功能篇 如何测试这个方法--性能篇 单元测试用例 JUnit 5和Selenium基础(一) JUnit 5和Selenium基础(二) JUnit 5和Selenium基础(三) 近几日一直在对之前的性能测试框架进行优化,在这个过程中,我之前利用Groovy单元测试框架spock写过的两个性能测试框架的单元用例起到了非常大的帮助

python unittest单元测试方法和用例

Deadly 提交于 2020-02-27 10:01:46
python内部自带了一个单元测试的模块,pyUnit也就是我们说的: unittest 先介绍下unittest的基本使用方法: 1.import unittest 2.定义一个继承自unittest.TestCase的测试用例类 3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。 4.定义测试用例,名字以test开头。 5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。 6.调用unittest.main()启动测试 7.如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。 下面是unittest模块的常用方法: assertEqual(a, b) a == b assertNotEqual(a, b) a != b assertTrue(x) bool(x) is True assertFalse(x) bool(x) is False assertIs(a, b) a is b 2.7 assertIsNot(a, b) a is not b 2.7 assertIsNone(x) x is None 2.7 assertIsNotNone(x) x is not None 2.7

搭建持续集成单元测试平台(Jenkins+Ant+Java+Junit+SVN)

别说谁变了你拦得住时间么 提交于 2020-02-27 05:21:52
一、环境准备 Jenkins: 到官网下载jenkins.war包: http://jenkins-ci.org/ 安装方法有两种: 把下载下来的jenkins.war包放到文件夹下,如C:\jenkins,然后打开命令行窗口并进到该目录下,执行java -jar jenkens.war命令,当提示:“Jenkins is fully up and running”时,表示启动成功,这时在浏览器窗口输入:http://localhost:8080/ 就可到jenkins的首页。 如果有tomcat,把jenkins.war包放在tomcat的webapps文件夹下,启动tomcat时会自动启动jenkins,这时通过http://localhost:8080/jenkins就 可以访问jenkins的首页了。 ANT:       下载ant并配置ANT_HOME,官网: http://ant.apache.org/ 。   3、Junit:       下载junit.jar包,没用过的可参考: http://blog.csdn.net/lengyuhong/article/details/5815017   4、SVN:       1、用本地硬盘当SVN仓库: http://wenku.baidu.com/view/12b02f6a011ca300a6c39081.html

AndroidStudio使用单元测试

谁说我不能喝 提交于 2020-02-25 16:21:36
创建第一个单元测试 向类中添加一些基本的算术运算方法,比如加法和减法。将下列代码复制到编辑器中。不用担心实际的实现,暂时让所有的方法返回0。 1234567891011121314151617181920 package com.example.testing.testingexample;public class { public double sum(double a, double b){ return 0; } public double substract(double a, double b){ return 0; } public double divide(double a, double b){ return 0; } public double multiply(double a, double b){ return 0; }} Android Studio提供了一个快速创建测试类的方法。只需在编辑器内右键点击Calculator类的声明,选择 Go to > Test ,然后 “Create a new test…” 在打开的对话窗口中,选择 JUnit4 和” setUp/@Before “,同时为所有的计算器运算生成测试方法。 这样,就会在正确的文件夹内 (app/src/test/java/com/example/testing

Django单元测试中Fixtures用法

為{幸葍}努か 提交于 2020-02-25 12:49:38
在使用单元测试时,有时候需要测试数据库中有数据,这时我们可以使用Django的Fixtures来生成测试数据。 基础配置 在settings.py 中配置如下内容: FIXTURE_DIRS = ('/path/to/api/fixtures/',) 在要测试的app中,增加目录 fixtures 在新增的 fixtures 目录下,新建文件 myapp.json ,文件名自己定,后缀必须是 .json 。 配置myapp.json 文件中内容格式如下,实际使用时,要删除掉实际情况,使用数据,并删除掉注释,如果需要多条数据,可以多写几个{}的内容: [ { "model": "myapp.user", # 数据库名 "pk": "a864340d850f484bb89ea2981047bc5e", # 要导入的数据 "fields": { # 要导入的字段,字段名跟数据库(models)内的字段一样,值,根据实际需要设置 "username": "zhangsan", "user_num": "000", "zh_name": "张三", "mobile": "18712345678", "mail": "zhangsan@abc.com", "is_deleted": false, "create_time": "2013-01-16", "update_time": "2013

构建有效的单元测试

一曲冷凌霜 提交于 2020-02-24 19:06:03
构建有效的单元测试 单元测试是应用测试策略中的基本测试。通过针对代码创建和运行单元测试,您可以轻松验证各个单元的逻辑是否正确。在每次编译后运行单元测试可帮助您快速捕捉和修复由应用的代码更改导致的软件回归。 单元测试通常以可重复的方式运用尽可能小的代码单元(可能是方法、类或组件)的功能。当您需要验证应用中特定代码的逻辑时,应构建单元测试。例如,如果您正在对某个类进行单元测试,则测试可能会检查该类是否处于正确状态。通常,代码单元在隔离的环境中进行测试;您的测试仅影响和监控对该单元的更改。您可以使用依赖项提供程序(如 Robolectric)或模拟框架将您的单元与其依赖项隔离开来。 注意:单元测试不适用于测试复杂的界面交互事件。对于此类事件,您应改用界面测试框架,如自动执行界面测试中所述。 为了测试 Android 应用,您通常会创建下面这些类型的自动化单元测试: 本地测试:仅在本地计算机上运行的单元测试。这些测试编译为在 Java 虚拟机 (JVM) 本地运行,以最大限度地缩短执行时间。如果您的测试依赖于 Android 框架中的对象,我们建议您使用 Robolectric。对于依赖于您自己的依赖项的测试,请使用模拟对象来模拟您的依赖项的行为。 插桩测试:在 Android 设备或模拟器上运行的单元测试。这些测试可以访问插桩测试信息,如被测应用的 Context

构建之法阅读笔记01

假如想象 提交于 2020-02-24 16:44:20
利用课余时间,我对《构建之法》前两章进行了详细的阅读,也学习到了更多的知识,同时对老师上课时间所讲的知识有了更进一步的了解。 首先,我简单了解到了程序与软件之间的关系。在我之前看来,程序与软件并没有太大的差别,感觉就是编程,就是在敲代码。这无形之中就被我们自己的定义所束缚。因为编程是枯燥无聊的,谁又能吧更多的心思放在这上面呢。软件=程序+软件工程。这是书本上,也是老师给与我的简单关系。它让我初步明白了软件与程序的不同之处。程序可以是简单的代码,可是软件却不能。软件是复杂的。它包含各方各面的东西,更有许多我们尚未接触到东西。只有通过不断的学习以及对软件的接触了解,才能越来越熟悉软件。也正是这种未知的东西才能让我们更好的进步。 其实让我思考最多的不只是软件的含义,而是软件开发的不同阶段。我思考了很久,我应该是处于哪个阶段?纸飞机—玩具阶段?业余爱好阶段?探索阶段?成熟的产业阶段?我想或许我只能处于最简单的玩具阶段吧,甚至于连玩具阶段都算不上。因为我连玩具都不会做!我要做的,就是把自己的兴趣更多的投入进去,才能更好的学习这门课程! 单元测试在编程以及软件当中不可或缺,它将会是我们软件的重要组成部分。更快更有效的测试,更利于我们对软件的开发与改进。在以往的编程学习当中,我也曾多次通过他人的代码来实现自己的程序,却也时常出现一些问题。在团队合作的软件行业当中

构建之法读书心得2

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-24 16:38:33
在第二章中,我们学习了如何进行单元测试,软件是由多个人共同完成的,如果某个模块出现问题,那么整个软件都会出错,所以我们就要进行单元测试。那么怎么样才能算是好的单元测试呢?最基本的一点,就是要在功能和参数上验证程序的正确性。其次,单元测试最好由代码的作者来写,因为代码的作者是最熟悉代码的,能更好的针对代码编写测试程序。单元测试还要保证测试之后,机器状态保持不变,速度也要快,并且重复测试结果应该一致。出了单元测试,还要对程序进行效能分析,保证程序运行的又快又好,占用资源少。效能分析有两种方法:抽样或代码注入。对于个人来说,我们应该对个人开发流程进行规划,大致的任务清单如下:预估任务所需时间、分析需求、生成设计文档、设计复审、代码规范、具体设计、具体编码、代码复审、测试、记录用时、测试报告、计算工作量、时候 总结、提出过程改进计划 来源: https://www.cnblogs.com/zzzzuuuuo/p/6752258.html

阅读《构建之法》1-5章有感

不问归期 提交于 2020-02-24 16:21:34
第一章  概论 软件工程是什么? 软件工程的核心部分(构建管理、源代码管理、软件设计、软件测试、项目管理)和用户体验、用户界面设计等组成了软件工程,而软件=程序+软件工程。 软件开发过程中的难题有5点: 1、复杂性 2、不可见性 3、易变性 4、服从性 5、非连续性 软件的其他特性:1、有许多不同的程序设计语言、软件工具盒软件开发平台。 2、存在许多不同的软件开发流程。 3、软件团队中存在许多不同的角色。 4、软件通 常可以存储在磁带上,也可以存储在CD、DVD上。 第二章  个人技术和流程 个人技术与流程与软件工程有什么关系? 软件是由多人合作完成的,不同人员的工作相互有依赖关系,所以个人技术是会影响整个软件开发的过程,个人技术主要是软件开发过程中的细节问题。在开发出软 件后,必须要经过测试才算是完成了软件,这就需要一个好的单元测试的标准——1、单元测试应该在最低的功能/参数上验证程序的正确性。 2、单元测试必须由最 熟悉代码的人(程序的作者)来写。 3、单元测试过后,机器状态保持不变。 4、单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)。 5、单元测试应该产生可重复、一致的结果。 6、独立性-单元测试的运行/通过/失败/不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。 7、单元测试应该覆盖所有代码路径。 8、单元测试应该集成到自动测试的框架中。 9