单元测试

Junit单元测试数据生成工具类

匿名 (未验证) 提交于 2019-12-02 21:52:03
在Junit单元测试中,经常需要对一些领域模型的属性赋值,以便传递给业务类测试,常见的场景如下: com . enation . javashop . Goods goods = new com . enation . javashop . Goods (); goods . setBrandId ( 1 ); goods . setCategoryId ( 1 ); goods . setGoodsName ( "测试商品" ); goods . setPrice ( 1.01 ); goods . setSn ( "100001" ); goods . setWeight ( 1.01 );    如果领域模型的属性特别多,手工去写set方法令人发指,写了一个生成的工具类,用法如下: String mockCode = MockDataGenerator . create ( Goods . class );   生成结果: com . enation . javashop . Goods goods = new com . enation . javashop . Goods (); goods . setBrandId ( 819 ); goods . setCategoryId ( 109 ); goods . setCost ( 1.01 ); goods .

Java如何对类进行单元测试

匿名 (未验证) 提交于 2019-12-02 21:52:03
Java对类进行单元测试 class Employee { public Employee ( String n , double s , int year , int month , int day ) { name = n ; salary = s ; LocalDAte hireDay = LocalDate . now ( year , month , day ) ; } ・・・・・・ ( 省略 ) public static void main ( String [ ] args ) { Employee e = new Employee ( "Herry" , 5000 , 2003 , 3 , 21 ) ; System . out . println ( e . getName ( ) + " " + e . getSalary ( ) ) ; } } 如果想要独立地测试Employee类,只需要执行 java Employee 如果Employee类只是一个更大型的应用程序的一部分,就可以使用下面这条语句运行程序 java Application java Application Employee类的main方法永远不会执行。 完整程序: package Employee ; import java . time . LocalDate ; /** * 《

Spring Boot干货系列:(十二)Spring Boot使用单元测试(转)

[亡魂溺海] 提交于 2019-12-02 21:32:53
前言 这次来介绍下Spring Boot中对单元测试的整合使用,本篇会通过以下4点来介绍,基本满足日常需求 Service层单元测试 Controller层单元测试 新断言assertThat使用 单元测试的回滚 正文 Spring Boot中引入单元测试很简单,依赖如下: 本篇实例Spring Boot版本为1.5.9.RELEASE,引入spring-boot-starter-test后,有如下几个库: • JUnit — The de-facto standard for unit testing Java applications. • Spring Test & Spring Boot Test — Utilities and integration test support for Spring Boot applications. • AssertJ — A fluent assertion library. • Hamcrest — A library of matcher objects (also known as constraints or predicates). • Mockito — A Java mocking framework. • JSONassert — An assertion library for JSON. • JsonPath —

Java单元测试和JUnit

匿名 (未验证) 提交于 2019-12-02 20:56:53
**********************单元测试和JUnit******************************** 为什么要使用单元测试 1.底层代码没问题,上一层才不会出现问题.. 就像盖楼一样 2.提高士气,明确知道我的东西是没问题的, 保证你不被开 3.加大测试的力度可以降低后期维护的成本 一.什么是JUnit JUnit是一个单元测试框架,另一个叫做TestNG 框架: 一组类(普通类、抽象类、接口)的集合,别人帮你写好了,你直接拿来用就可以了, 提供一系列功能... 提供了测试相关的功能 半成品: 一半已经完成了、一半没有完成 类似于填空题、选择题 使用框架的好处: 限制了程序员的随意发挥,提高了程序的可读性和可维护性,便于团队的开发 JUnit已经逐渐成为xUnit家族中最为成功的一个. xUnit中还有: cppUnit、pythonUnit、xUnit.net 二.why 为什么用JUnit 使用main方法测试好不好?? 不好.缺点如下 1.多个测试用例类无法同时测,每测一个业务逻辑类 都用单独去执行它的测试用例,比较麻烦 2.使用main方法测试需要人为的观察 测试结果 比如看到30 就是正确 比较麻烦 使用了jUnit以后 只需要看bar就可以了 绿条 表示测试通过 红条 表示测试失败 三.how 如何使用jUnit 去官网下载 http:/

【java】单元测试Mockito中的Mock和Spy

匿名 (未验证) 提交于 2019-12-02 20:37:20
项目中,有些函数需要处理某个服务的返回结果,而在对函数单元测试的时候,又不能启动那些服务,这里就可以利用Mockito工具。Mockito中的Mock和Spy都可用于拦截那些尚未实现或不期望被真实调用的对象和方法,并为其设置自定义行为。二者的区别在于: 1、Mock实现的对象中,除了使用doCallRealMethod()定义之外,对函数的调用均执行mock(即虚假函数),不执行真正部分。 2、Spy实现的对象中,除了使用when().thenReturn()定义之外,对函数的调用均执行真正部分。 例: public class Main { public void fun(String s) { System.out.println(s + " : fun"); fun1(s); fun2(s); } public void fun1(String s) { System.out.println(s + " : fun1"); } private void fun2(String s) { System.out.println(s + " : fun2"); } public int getVal(){ return 5; } } Mock使用实例: 1、使用doCallRealMethod().when()调用函数真正部分。 2、使用when()

Python 单元测试 生产HTML测试报告

匿名 (未验证) 提交于 2019-12-02 20:32:16
使用HTMLTestRunnerNew模块,生成单元测试的html报告,报告标题根据对应测试时间。 import unittest from datetime import datetime from Python_0717_unittest . HTMLTestRunnerNew import HTMLTestRunner one_suite = unittest . defaultTestLoader . discover ( "." ) report_full_path = "./reports/" + "report_" + f "{datetime.now():%Y%m%d%H%M%S}" + ".html" # 放入指定文件夹中 # with open(r"F:\python_homework\Python_0715_unittest_homework\report.html", mode="wb") as save_to_file: with open ( report_full_path , mode = "wb" ) as save_to_file : # 报告名称添加时间信息 curr_time = datetime . datetime . now () time_str = datetime . datetime . strftime ( curr_time

如何保障前端项目的代码质量

感情迁移 提交于 2019-12-02 19:50:43
本文转载于: 猿2048 网站➫ https://www.mk2048.com/blog/blog.php?id=ckik00kib 对于中大型前端项目,项目规范与代码质量尤为重要。当功能需求变更或需要重构时,随心所欲的(糟糕的)代码可能带来比重新开发还麻烦的问题。 1 前端项目代码中的常见问题 1.1 凌乱的书写风格,阅读体验差 这个问题不用作过多阐述,想必接手过他人代码的同学,多少都有些体会。简单来说,太过随意的代码会让强迫症患者难以容忍,难以阅读理解的代码有时甚至不如推倒重来。 1.2 低质量的编码,bug 不断 什么样的代码是低质量或高质量的?好的代码可能会让你如读小说一般被吸引,糟糕的代码会让你看一眼就不想继续、甚至看半天而不知所云。 有人可能认为初级程序员才会有这种问题,其实不然,一些工作经验两三年的同学写的代码依然如此。对于一些个人自学意识不够积极、没有团队规范性指引的同学,很容易习惯成“学习半年、然后重复三年无长进”的情况。 拿出来你可能不太愿意相信,下面这些例子即来源于真实项目。你能尽可能地找出其中存在的各种问题吗? 图1 图2 图3 图4 图5 图6 图7 以上只是截取的一些很简短的列子,那么涉及大块复杂逻辑的地方会是怎样的,试试发挥一下你的想象力。 1.3 功能不分离,逻辑糅合,难以阅读和理解 这种问题其实是非常普遍的。 一个函数几百行、一个文件数千行

单元测试

限于喜欢 提交于 2019-12-02 19:49:03
单元测试的目的是测试代码块儿的运行逻辑是对的。 之所以有单元测试,是为了服务重构。 同样,重构是指的改变代码块儿的逻辑但不改变行为。 来源: https://www.cnblogs.com/-outman/p/11761446.html

单元测试实战(四种覆盖详解、测试实例)

女生的网名这么多〃 提交于 2019-12-02 18:34:21
理论部分 前言 单元测试,就是对某一段细粒度的Java代码的逻辑测试。代码块一般指一个Java 方法本身,所有外部依赖都需要mock掉,仅关注代码逻辑本身。 需要注意,单测的一个大前提就是需要清楚的知道自己要测试的程序块所预期的输入输出,然后根据这个预期和程序逻辑来书写case。 (这里需要注意的就是单测的预期结果 一定要针对需求/设计逻辑去写,而不是针对实现去写,否则单测将毫无意义,照着错误的实现设计出的case也很可能是错的) 覆盖类型 1、行覆盖 Statement Coverage 行覆盖(又叫语句覆盖)就是通过设计一定量的测试用例,保证被测试的方法每一行代码都会被执行一遍。 路径覆盖是最弱的覆盖方式。 实例: public Integer fun3(Integer a, Integer b, Integer x) { if (a > 1 && b == 0) { x = x + a; } if (a == 2 || x > 1) { x += 1; } return x; } 本例仅需要一个case,即可实现行覆盖。test case 如下: a b x 预期结果 TC1 2 0 3 6 @Test public void testFun3StatementCoverage(){ Integer res = demoService.fun3(2,0,3); Assert

phpunit 单元测试

試著忘記壹切 提交于 2019-12-02 18:31:51
用了这么久的php一直都是用xdebug在调试,今天想来试试php单元测试。 安装phpunit 为 PHP 的二进制可执行文件建立一个目录,例如 D:\phpunit 将 ;D:\phpunit 添加加到 PATH 环境变量中 下载 http://phar.phpunit.cn/phpunit-6.2.phar 并将文件保存到 D :\phpunit\phpunit.phar 打开命令行 建立外包覆批处理脚本(最后得到 C:\bin\phpunit.cmd ) C:\Users\Administrator>D: D:\>cd phpunit D:\phpUnit> echo @php "%~dp0phpunit.phar" %* > phpunit.cmd 新开一个命令行窗口,确认一下可以在任意路径下执行 PHPUnit:    2.编写测试类   新建一个Demo.php文件 <?phpclass Demo{ public function foo(){ return "foo"; } public function bar(){ return "bar"; } }   在写一个test.php文件 <?phpinclude "Demo.php"; use PHPUnit\Framework\TestCase; class TestDemo extends TestCase{