作者:Antonio Leiva 时间:Mar 2, 2017 原文链接:https://antonioleiva.com/mockito-2-kotlin/ 如我们在前面文章中谈到的,Kotlin最常见的问题之一是,在默认情况下,所有类和函数都是关闭的. 这就是说,如果你要mock一个类(这在Java测试中,这些可能是非常普通的),你或是需要用保留字open将其打开,或是将其提取出一个接口. 这两种方法都可能是令人厌烦的,事实上他们限制Java开发者使用Kotlin. 幸运的是,Mockito…
mock final类相对简单,直接贴代码 被测方法: public class FinalEmployeeService { public void insertEmployee(Employee employee) { FinalEmployeeDao employeeDao = new FinalEmployeeDao(); employeeDao.insertEmployee(employee); } } final 类 final public class FinalEmployeeD…
Mockito是很常用的测试工具,使用过程中可能会遇到下面的问题: Mockito cannot mock/spy because : - final class 问题重现: 引入该依赖到项目的maven配置如下: <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>3.3.3</version>…
也相对简单,直接贴代码 被测方法 public class EmployeeServiceWithParam { public void createEmployee(final Employee employee) { EmployeeDaoWithParam employeeDao = new EmployeeDaoWithParam(false, Dialect.MYSQL); employeeDao.insertEmploye(employee); } } public class Em…
Mock Final mockfinal相对来说就比较简单了,使用powermock来测试使用final修饰的method或class,比较简单,接口调用部分,还是service调用dao. 对于接口及场景这里就不细说. service层 具体代码示例如下: package com.rongrong.powermock.mockfinal; /** * @author rongrong * @version 1.0 * @date 2019/11/27 21:29 */ public class…
1.为什么要用mock 我的一本书的解释: (1)创建所需的DB数据可能需要很长时间,如:调用别的接口,模拟很多数据 (2)调用第三方API接口,测试很慢, (3)编写满足所有外部依赖的测试可能很复杂,复杂到不值得编写,Mock模拟内部或外部依赖可以帮助我们解决这些问题 另一本TDD书的解释: (1)对象的结果不确定,如每获取当前时间,得到的结果都不一样,无法符合我们的预期: (2)实现这个接口的对象不存在: (3)对象速度缓慢 对于TDD还有一个更重要原因:通过模拟可以隔离当前方法使用的的所有…
在任何一门面向对象编程的语言里,类(class)是非常基础.但也是非常重要的一项组成,通俗的说就是万般皆对象,而所说的对象就是我们生成的类.Kotlin也是如此,下面详细为大家介绍Kotlin中的类的组成结构.函数.声明等. 目录 一.类的声明 1.关键字 声明类的关键字为class 2.声明格式 class Test{ // 属性... ... // 构造函数 ... // 函数 ... // 内部类 ... ... } 其中: 当类没有结构体的时候,大括号可以省略.即: class Test…
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步! Kotlin学习笔记(1)- 环境配置 Kotlin学习笔记(2)- 空安全 Kotlin学习笔记(3)- 语法 Kotlin学习笔记(4)- 流程控制 Kotlin学习笔记(5)- 类 Kotlin学习笔记(6)- 属性 Kotlin学习笔记(7)- 接口 Kotlin学习笔记(8)- 扩展 Kotlin学习笔记(8)- 扩展(续) Kotlin学习笔记(9)- 数据类…
概念 Java的不可变类是指八个基础类型的包装类和String,他们的数据成员是不可变的.使用加法等操作时,其实是创建了一个新的对象. Java的final类是对类用关键字final进行修饰,说明该类是不可被继承的. 关联 不可变类为了保证其不可变性,通常实现上有以下几种规则: 成员变量是private final的,get返回对象成员变量的副本 初始化(使用构造函数)成员变量时,使用副本.不提供set函数. 方法或者类为final,防止子类修改其成员变量. 由于不可变类的成员变量不变,所以计算…
1.编译器查看对象的声明类型和方法名.当调用 x.f(param); 且隐式参数x生命为C类对象.这时候可能有多个名字都叫f,但是参数类型不一样的方法.编译器会一一列举C类中名为f的方法和其超类中访问属性为public并且名为f的方法.(超类的私有方法是不能访问的) 进行到这里的时候编译器已经获得了可能被调用的所有的候选方法. 紧接着,编译器就会开始查看调用犯非法提供的参数类型.如果在所有名为f的方法中存在一个与提供的参数类型完全匹配,就选择这个方法.这个过程被称为重载解析. 到这个时候编译器已…
inal---用于类.方法前. final类---不可被继承. final方法---不可被覆盖. final类不能被继承. 如果我们不希望一个类被继承,我们使用final来修饰这个类.这个类将无法被继承.比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型. final方法不能被重写 如果不希望类中的某个方法被子类重写,我们可以设置这个方法为final方法,只需要在这个方法前加上final修饰符(子类中还是可以调用父类中的…
1. final是类型说明符,表示关闭继承,即final类不能有子类: 但final类可能可以在类外创建对象(即final类的构造方法可以不是private型): 在同一包中时,可以在任何另外一个类中使用public类与友好类创建对象; 不在同一包中时(import语句),可以在任何另外一个类中使用public类创建对象. 2. private是访问控制符, private方法不能在类外调用.所有构造方法都是private的类,不可以在该类外创建对象,也不能有子类. 说明: 所有构造方法都是pr…
终止继承 Final类 当关键字final用来修饰类时,其含义是该类不能在派生子类.换句话说,任何其他类都不能继承用final修饰的类,即使该类的访问限制为public类型,也不能被继承:否则,将编译报错.可以继承的其他类. 什么时候应该使用final修饰类呢? 只有当需要确保类中的所有方法都不被重写时才应该建立最终(final)类,final关键字将为这些方法提供安全,没有任何人能够重写final类中方法,因为不能继承. Final方法 当用final关键字修饰方法后,该方法在子类中将无法重写…
final---用于类.方法前. final类---不可被继承. final方法---不可被覆盖. final类不能被继承. 如果我们不希望一个类被继承,我们使用final来修饰这个类.这个类将无法被继承.比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型. 代码如下: <? //声明一个final类Math final class Math{ public static $pi = 3.14; public funct…
1.在单元测试某个类的时候,引入该类的时,添加注解@InjectMocks 2.该类的变量,需要添加注解:@Mock 3.类中需要第三方协作者时,通常会用到get和set方法注入.通过spring框架也可以同 @Autowird 等方式完成自动注入.在单元测试中,没有启动 spring 框架,此时就需要通过 InjectMocks完成依赖注入.InjectMocks会将带有@Spy 和@Mock 注解的对象尝试注入到被 测试的目标类中.…
Dajngo——10 HttpRequest对象 HttpResponse对象及子类 form标签中的GET和POST GET提交方式 POST提交方式 request得GET和POST属性 文件上传 服务器得cookie操作 类视图方法 HttpRequest对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API HttpResponse对象 Http…
Java 中常见的 final 类 java.lang 包 public final class Boolean extends Object implements Serializable, Comparable public final class Byte extends Number implements Comparable public final class Character extends Object implements Serializable, Comparable p…
final修饰的类不可以有子类,例如:java.lang.Math类就是一个final类,它不可以有子类 子类继承父类,可以访问父类的内部数据,可以重写父类的方法来改变父类方法的实现细节,可能导致不安全因素:为了保证某个类不可被继承,则可以使用fianl修饰这个类, 代码示例: public final class FinalClass{} //下面的类定义将出现错误 class Sub extends FinalClass{} FinalClass为final类,不能被继承,编译错误 ====…
返回本章节 返回作业目录 需求说明: 创建一个数学工具类. 将该类设计为final类. 将该类的构造方法的访问权限定义为私有,以防止外界实例化该类. 在该类定义静态double类型常量π,其值为3.14159268. 定义静态方法addition(),用于计算一个int[]类型的数组元素之和. 定义静态方法circ(),用于计算圆形的周长. 定义静态方法sort(),用于对传入的int[]数组元素进行升序排序. 实现思路: 创建一个数学工具类的实现思路: 创建MathUtils类,该类可作为一个…
作者:Antonio Leiva 时间:Mar 9, 2017 原文链接:https://antonioleiva.com/dialogs-android-anko-kotlin/ 借助Builder,在Android创建警告提示和对话框相对来说是件简单的事,但是由于语言繁杂,有些提示通常就变得十分含糊. 在Kotlin中,仅Lambda表达式,可以帮助我们理解一点代码是怎样处理的. 但是,有了Anko,我们能够这一切都更加简单,在这篇文章中我们看到是怎么回事. 在Kotlin用Anko做警告提…
作者:Antonio Leiva 时间:Jul, 11, 2017 原文链接:https://antonioleiva.com/reasons-kotlin-android/ 这组文章已到最后了,它们是非常实用的.今天我想谈谈为什么我认为学习Kotlin是非常有趣的. 虽然, Kotlin现在已是官方支持的开发Android APP的编程语言,而你仍可能觉得没有足够的理由进行改变.在这些年以来,Java已经证明其能力,为什么要改变? 这是我认为转换到Kotlin不是一个冒险的赌注,而是你可以做的…
/** *   栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放  在常量池中). 堆(heap):存放所有new出来的对象. *   静态存储:存放静态成员(static定义的). 常量池(constant pool):在堆中分配出来的一块存储区域,存放储显式的String常量和基本类型常量(float.int等).另外,可以存储不经常改变的东西 *                       p…
作者:Antonio Leiva 时间:Jan 11, 2017 原文链接:https://antonioleiva.com/extension-functions-kotlin/ 扩展函数是Kotlin提供的非常酷的特性,在编写Android应用程序时,你将发现自己会大量使用它. 我们必须承认Android框架有时做些事有点困难,在Java中我们唯一的解决方案是把我们要做事封装起来,或利用可读性差的类静态方法. 你想怎样才能加额外函数到框架类?这就是Kotlin扩展函数允许我们做的. Kotl…
文件上传: ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中, 在使用ServletFileUpload对象解析请求时需要根据DiskFileItemFactory对象的属性sizeThreshold(临界值)和repository(临时目录)来决定将解析得到的数据保存在内存还是临时文件中,如果是临时文件,保存在哪个临时目录中?.所以,我们需要在进行解析工作前构造好DiskFileItemFactory对象,通过ServletFile…
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; ... ... } final的最基本特点就是不可继承,不可修改.不可修改说的是引用地址不可变.他会一直指向某块堆等. 为了实现字符串池(常量池),字符串必须是不可变的. 还有就是String被设计为多线程安全的,同一实例可以被多个对象共享,而对象只能读…
FtpTransferUtil.java工具类,向ftp上传或下载文件: package utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.commons.net.ftp.FTP; import org.apache.co…
类 参考链接 类定义格式 使用class关键字定义,格式如下: class T{ //属性 //构造函数 //函数 //内部类 } Java Bean类 java bean类 //java bean类 public class Student { private String name; private int age; public Student() { } public Student(String name) { this.name = name; } public Student(St…
1.汉语转拼音: import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.…
如果说整个类都是final(在它的定义前冠以final关键字),就表明自己不希望从这个类继承,或者不允许其他任何人采取这种操作.换言之,出于这样或那样的原因,我们的类肯定不需要进行任何改变:或者出于安全方面的理由,我们不希望进行子类化(子类处理).除此以外,我们或许还考虑到执行效率的问题,并想确保涉及这个类各对象的所有行动都要尽可能地有效. /** * Created by xfyou on 2016/11/2. * final class演示 */ //! class Further exte…
上回我们说到ES5的面向对象,以及被大家公认的最佳的寄生组合式继承.时代在进步,在ES6中对于面向对象这个大boss理所应当地进行了一次大改,从原先那种比较长的写法转变为"小清新"写法.我们一起来看一下. 在ES6中是有类这个概念,而且是堂而皇之地有了. 我们来看一串代码: class Dad { constructor(name="无姓名",age=0){ this.name=name; this.age=age; } surface(){ console.log…