单元测试

从一个案例深刻领悟TDD的真谛

偶尔善良 提交于 2020-01-10 14:33:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一直以来比较推崇在开发中进行全面的单元测试,我觉得单元测试的好处非常多。但是没有真正的用起TDD,在编写功能实现代码之前先编写测试代码,这样的习惯没有养成,意义也没有觉得非常大。因此TDD其实没有真正用起来。 直到最近在实际工作中的一个案例让我更加深刻得领悟出TDD开发的真谛! 案例:最近我们开发一个消息中心的服务,该服务要给数十个项目组提供接口,由于各项目组的进度和步调不一致,消息中心服务的项目先开始工作,定义好了接口之后,将接口公布出去,然后就开始实现接口功能,进行接口的单元测试及模拟集成测试。一段时间后,陆陆续续有些应用项目组开始工作,发现了接口定义的一些问题,这些问题有的是接口无法满足他们的需求;有的是有些字段没有;有的是感觉接口使用不方便;反正最终导致的结果是消息中心服务项目组的代码进行了多次返工和修改,浪费了很多时间,至今还没有彻底满足所有项目组的需求。 后来我接收负责其中一个接口的实现,反思之前出现的问题的原因是什么?有什么办法可以解决或者减轻这种问题呢?我觉得最根本的原因是在设计和实现接口的时候,服务提供项目组没有让服务的用户参与进来一起进行设计,服务接口公布出去之后,由于服务用户没有真正去了解和使用,也无法提出问题,等真正开始使用的时候才发现一大堆问题

Spring单元测试

拥有回忆 提交于 2020-01-10 00:23:04
第一步,引入依赖: <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <org.springframework.version>5.0.7.RELEASE</org.springframework.version> org.springframework spring-core ${org.springframework.version} org.springframework spring-test ${org.springframework.version} test junit junit 4.12 test 第二步: 编写测试类: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(“classpath:applicationContext.xml”) //配置文件地址 public class AopTest { @Resource(name=“goodsDao”) private GoodsDao goodsDao;

单元测试

若如初见. 提交于 2020-01-09 15:44:12
转自 https://blog.csdn.net/u011242745/article/details/52563313 记录学习 JUnit 4 开始使用 Java 5 中的注解(annotation),常用的几个 annotation 介绍: @BeforeClass:针对所有测试,只执行一次,且必须为static void @Before:初始化方法 @Test:测试方法,在这里可以测试期望异常和超时时间 @After:释放资源 @AfterClass:针对所有测试,只执行一次,且必须为static void @Ignore:忽略的测试方法 一个单元测试用例执行顺序为: @BeforeClass –> @Before –> @Test –> @After –> @AfterClass 每一个测试方法的调用顺序为: @Before –> @Test –> @After 来源: CSDN 作者: yxy_No.1 链接: https://blog.csdn.net/qq_34198206/article/details/103907228

Android UnitTest

北城余情 提交于 2020-01-08 10:30:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Android 的单元测试感觉比java的单元测试更难一些(可能是因为我比较菜...),我想很多小伙伴也是这么认为的吧, 现在做Android开发,大部分的人都是直接就开搞, 不管它三七二十一,先把功能实现再说, 什么文档,单元测试都是浮云. 下面我想带大家了解一下Android里面的单元测试(比较简单的功能方法的测试).比如在我的Android项目中, 有一个对一些数据进行特殊的分组处理, 那么我想测试我写的这个分组处理的方法是不是正常的,那么在Android中就可以利用单元测试进来测试. 要想在Android 中使用单元测试, 那么一件事情是绝对不对忽视的 在Android 中简单的单元测试可以分"四部曲"来完成 先新建一个Android 工程 在AndroidManifest.xml文件中进行注册.这一步非常之关键, (1) < uses-library android:name ="android.test.runner" /> (2) <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.androidjunittest" android

单元测试用例

两盒软妹~` 提交于 2020-01-06 23:42:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 单元测试是测试的等级,其中个别单元/组件(称为单元)的最小部分被测试以确定它们是否适合使用。 单元测试用例的编写和执行是由开发人员(一般情况,当然也有二般情况)完成的,以确保各个单元都能按预期工作。各个组件的最小部分,测试对象如函数,过程,类,接口等。 如果以函数为例,则在将输入参数传递给函数时,请检查函数是否应返回期望值。该测试的主要目的是检查单元是否按照设计工作,并更合理地处理错误和异常,并对各种正向、反向的情况进行兼容。 单元测试被认为是白盒测试的一种。这是测试级别最低的一层,是在进行集成测试之前开始的。 单元测试用例指南: 单元测试计划/案例应单独提供,不应将其与其他步骤合并。尝试所有可能的测试方案,其中包括不常见和替代的流程。一旦项目进入施工阶段,开发人员就会倾向于仅测试成功情况或已经在编码完成的情况。 软件开发和单元测试需要划分为不同的阶段,并相应地安排交付时间。 需要将单元测试结果作为一个单独的交付项进行处理。这将有助于在初期阶段过滤掉业务流程中的部分错误,而不是在集成测试或系统测试中。 通过统计计划,执行,通过和失败的测试用例计数来掌握项目进度。 尝试在开发的过程中进行一些即时的测试。 单元测试用例清单: 输入数据验证: 本节包含了一系列检查,这些检查通常可以对输入到应用程序系统中的数据采用。

完整的IT项目开发流程

萝らか妹 提交于 2020-01-05 10:13:22
一般情况下,企业开发软件时会按照基线和定制两块并行方式执行项目开发工作。无论什么公司,都需要遵从一套成熟的产品研发过程体系,才能做出质量较好的产品。因此,如果出现项目较多的情况,应该合理地安排基线和定制之前的里程碑,让基线产品能够尽量多地收集用户的通用型需求,为定制项目进度实现技术支撑,减少定制项目中大量更改代码、需要新增模块情况发生。此外,产品研发过程体系也需要按照业务实际时间要求变化,不要拘泥于一定要按照瀑布方式,或是敏捷方式进行管理,凡事都需要找到契合自己的方式。 【这里以一个基线产品开发过程作为流程解释基础,需要注意的是,以下说描述的各个阶段,在项目执行前要明确各个阶段的目标、指定计划、及时沟通,并确保各个时期所有成员对项目理解一致】 项目启动会 项目启动会的目标是明确该产品开发项目的目标。目标不是孤立存在的,目标与计划相辅相成,目标指导计划,计划的有效性影响着目标的达成。所以在执行目标的时候,考虑清楚自己的行动计划,怎么做才能更有效地完成目标,是每个人都要详情清楚的问题,否则,目标越是不清晰或是过高,都会影响项目的实际结果。 项目启动会需要说明项目目标、阶段划分、组织结构、管理流程等关键事项,并将这些内容写入 PPT(最好是有固定格式和范文,让团队内部或者公司内部共同遵守规范),需要大家达成一致。对于关键角色任命,事前也需要听取相关领导和项目主要干系人的意见。 用户需求

nestjs 单元测试

﹥>﹥吖頭↗ 提交于 2020-01-04 00:46:06
启动单元测试 zengwe$ npm run test 运行效果 PASS src/admin/controllers/zeng-Try.controller.spec.ts Test Suites: 1 skipped, 14 passed, 14 of 15 total Tests: 7 skipped, 57 passed, 64 total Snapshots: 0 total Time: 7.422s, estimated 10s Ran all test suites related to changed files. Watch Usage: Press w to show more. controller单元测试 import { Body, Controller, Post, Get, Put, Delete, Query } from '@nestjs/common'; import { isNullOrUndefined } from 'util'; import { code } from '../../common/code'; import { zengTryService } from '../services/zeng-Try.service'; import { AddForm, UpdateForm, DeleteForm} from '.

开发流程

好久不见. 提交于 2019-12-28 07:07:21
  一个完整的开发流程应该有这四步:分析->设计->编码->测试。很多开发团队往往只有编码这边,弱化了其他步骤,他们拿到需求就开始写代码, 写着写着发现有问题,要么是遇到一个难点解决不了,要么是发现要返回修改以前写过的代码, 要么是发现有大量的重复代码,又不知道怎么封装,只能将错就错。做好了分析和设计编码时就不会有这么多问题, 做好了测试产品bug就少,产品质量才高。 下面我分别详细讲解一下这四步。 分析   分析的时候,我们要分析需求和难点。   分析需求的方法是做需求陈述处理,前面我提到过, 要区分做什么和怎么做,把这两部分独立出来,做什么是固定不变的, 而怎么做可能会经常变。我们再熟悉一下举的那个例子:我们要做一个成员列表(如图1-44),产品经理告诉我们要按姓名拼音排序。 图1-44 成员列表的例子   我们有时候不能直接听产品经理的,如果真写死成按姓名拼音排序就没有可扩展性了,比如某一天产品经理又告诉你需要把VIP会员提前,那么你只能再去修改排序的程序。这个需求始终不变的是排序,按姓名拼音只是排序的一种方法,我们在设计数据库时应该把排序字段设置为数字而不是拼音,再写一个拼音转换为数字的算法即可,这样在后面排序规则变化,比如VIP会员要提前,只是修改对应用户数据库的排序字段数值即可,不用大改程序。   我们可以用xmind做需求分析,

单元测试

坚强是说给别人听的谎言 提交于 2019-12-28 02:48:27
单元测试 在写完功能之后,自然就是测试来验证自己接口是可运行的 采用的是MockMvc的框架 添加依赖 <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>0.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path-assert</artifactId> <version>0.8.1</version> <scope>test</scope> </dependency> 在做测试的时候要先分清楚自己这个接口是什么请求(get,post,put…)还有自己的请求参数 springcloud测试类 首先,这是一个基于springcloud的接口,创建测试类,可以直接生成也可以自己写 在类上贴两个注解 @SpringBootTest(classes = 启动类.class) @RunWith(SpringJUnit4ClassRunner.class) 大家注意 @springBootTest和@WebMvcTest不能混用 混用会出问题的,如果要混用,请带上

Springboot关掉单元测试

为君一笑 提交于 2019-12-27 19:22:11
环境:Springboot2.x,配置如下 1. 方式一 <maven.test.skip>true</maven.test.skip>跳过测试且不会生成class <skipTests>true</skipTests>会跳过测试但是会生成测试class <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <dependencies> <!-- spring热部署 --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.8.RELEASE</version> </dependency> </dependencies> <configuration> <!--默认关掉单元测试 --> <!-- <maven.test.skip>true</maven.test.skip> --> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build> 2. 方式二