背景简述

本人是一个自学一年Java的小菜鸡,理论上跟大多数新手的水平差不多,但我入职的新公司是要求转Clojure语言的。坊间传闻:通常情况下,最好是有一定Java的开发工作经验,再转CLojure可能容易一些。我入职后的实际经历也确实让我感受到了Clojure的自学难度略大于自学Java,遇到的困难主要与中文资料较少有关,具体为:

1 中文的面向新手的较为系统的教程材料较少,目前个人感觉最好用的还是《CLojure编程 Emerick著》这本书,网上应该很好找,如果大家没有电子版的话可以留言,我看到后就立刻分享给大家

2 中文的网上相关问题和讨论较少, 以前学Java的时候基本遇到的问题用百度就能解决,现在大概率要直接用bing或谷歌,或者直接在stackoverflow(虽然是英文的,但貌似是最好用的IT问答网站)上查

我的这个系列笔记主要是基于 0工作经验的后端开发转学Clojure 的场景下完成的,里面有一些个人观点和个人理解的注释,写的时候是为了便于自己理解相关的概念,现在分享出来一方面是希望能帮助像我一样的新手更好地理解,另一方面也是希望有高手能够发现错误并帮忙斧正,谢谢

一些格式的简单约定:

粗体:比较重要的内容

斜体:我个人理解/观点或是补充内容,大家选择性食用

P15:表示书上第15页

第13章 测试

13.1 术语

测试的目的:构造合适环境、运行一些代码、证实代码按预期表现或返回

clojure.test:包含在clojure标准函数库的测试框架

模拟对象:模仿某些代码依赖的真实对象或服务的行为,clojure中不太有必要模拟对象

Midje:更受欢迎的一种Clojure测试框架,提供更复杂的语义和功能

断言:编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。

is宏:clojure.test中的断言

testing宏:给测试添加文档、扩展失败报告

13.2 clojure.test

clojure.test:包含在clojure标准函数库的测试框架

13.2.1 定义测试的两种方式

13.2.1.1 用deftest宏把测试定义成单独的函数

特点:

  1. 只定义零参数的函数
  2. 与正常函数无异,可以在REPL中使用

常用的构建工具会在项目的test子目录里面查找并运行测试

13.2.1.2 用with-test将测试与被测试函数绑定

13.2.2 测试“套件”

简单理解其实就是函数嵌套调用,比如a调用了b,b调用了c

因为deftest定义测试之后,var的元数据:test已经被写入了,而run-tests会调用所有var的元数据:test函数,所以嵌套使用会导致重复测试,有两个办法解决:

  1. 定义一个test-ns-hook,作为命名空间下唯一的run-tests入口
  2. 将子断言放在普通函数中,这样函数就不会有:test元数据

13.2.3 Fixtures

Fixtures提供一种方法来设置和撤除服务、数据库状态、模拟函数和测试数据,从而确保一个命名空间的所有测试在售空的环境里调用所有测试

最新文章

  1. 常用类String的方法
  2. 怎样运用好ZBrush中的布尔运算
  3. Java Eclipse进行断点调试
  4. SQL 常见函数使用
  5. c++基础(二):成员he派生类
  6. Map Resource Definition 中type为 'ArcGIS Server Local'.
  7. C++达到String分类
  8. java装饰模式
  9. C++ 头文件系列(istream)
  10. php解决json_encode输出GB2312中文问题 (数组)
  11. 【】tensorflow学习笔记
  12. 【C】NO.85.EBook.10.C.1.001-【C primer plus】-
  13. 判断终端类型、微信的文章防盗链、h5页面跳转打开新的app、跳转到app市场
  14. [POI2007]ZAP-Queries (莫比乌斯反演+整除分块)
  15. swift.org - About Swift 官网关于notes
  16. First normal formal Second normal form
  17. Prime k-tuple UVA - 1404
  18. xml大项目,增删改查
  19. Fiddler-- 安装HTTPs证书
  20. linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析【转】

热门文章

  1. Python-变量、变量作用域、垃圾回收机制原理-global nonlocal
  2. Appium的一些问题的总结答案
  3. VUE第一个项目怎么读懂
  4. sprintf_s() 、sprintf()和printf()区别和用法
  5. SHOI 2013 【扇形面积并】
  6. javaagent+asm破解censum
  7. 在nginx下导出数据库数据
  8. 多测师讲解html _链接标签004_高级讲师肖sir
  9. goland 2020 去除形参提醒
  10. go 不停模拟 写日志