cocosCreator单元测试
一、是什么单元测试是针对一个小模块(函数、类)做的检查。检查模块在执行后,它的输出是否符合期望。简单来说,就是测试咱们写的小模块正确。
二、为什么那为什么需要单元测试呢?因为它会带来很多好处。
- 1、保证小模块的编写是正确的;
- 2、大模块、程序是由小模块组成的,这也保证了程序的质量;
- 3、易于重构。有了单元测试,我们可以大胆的重构代码;
- 4、使代码更加清晰、简洁。
很多大神已经总结过单元测试的好处了。其本质是能减轻咱们开发的工作量,使工作变得轻松。
三、代码分类我们需要在具体进行操作之前,先定义两个概念:
- 1、业务逻辑代码;
- 2、界面、用户交互代码;
- 3、原生代码。
在 CocosCreator 工程中,我们写的代码大致可以分为以上这几种。
3.1、业务逻辑代码业务逻辑代码主要是一些业务计算逻辑。比如:数据建模、算法、字符串或数组等API的扩展。这些代码不会涉及到任何 CocosCreator 中的 API。我们的测试重点也在于这些代码。
3.2、界面、用户交互代码凡是使用了 CocosCreator 中的 API,都可以归为此类代码。比如自定义的组件、cc.Label、cc.Sprite 等。这些代码用户展示界面、处理用户的交互行为。一般依赖于开发、专业的测试人员进行白盒测试;另外,这些代码依赖了引擎 API,所以运行这些代码时,需要引擎代码参与,这对于单元测试是一个比较大的限制。所以此类代码不在本文的讨论范围。
3.3、原生代码iOS、android 等原生代码。这些原生已经有成熟的测试工具,不在本文讨论范围。
3.4、小结经过上面的总结,可以发现,本文讨论的单元测试,由于各类限制,仅适用于业务逻辑代码部分。这会强迫你将业务代码和界面交互代码分离,这对于清洁的代码而言,也是一个好消息。接下来我们开始动手准备单元测试了。
四、测试
4.1、环境准备在单元测试前,我们需要搭建后测试的环境。 主要是安装两个软件。
4.1.1、NodeJsNodeJs 是我们测试代码运行起来的环境。下载地址是:https://nodejs.org/en/download/。建议安装 14 LTS 版本。
4.1.2、npmnpm 是 js 的包管理器。上面有很多第三方的 js 库。一般而言在安装 NodeJs 时,会附带安装好 npm。
安装验证:node -v #
会输出如: v12.16.1 npm -v # 会输出如:6.14.5
4.2、开始4.2.1、CocosCreator 工程结构一个典型工程结构如下
(去掉无关的文件及目录):
.我们写的代码一般都放到 ./assets/Script 目录下。
咱们的工程里,测试的环境有一个要求:不能对 CocosCreator 工程本身造成影响。这意味着测试代码、配置不能让 CocosCreator 感知到。
/**
* 分割字符串
* @param str 将会被分割的字符串
* @param charCount 每 `charCount` 个会被分割
* @param divChar 分割字符。
*/
function division(str: string, charCount: number, divChar: string = ',') {
const chars: string[] = [];
let count = 0;
for (let i = str.length - 1; i >= 0; --i) {
chars.push(str[i]);
count++;
if (count % charCount == 0 && i !== 0) {
chars.push(divChar);
}
}
const result = chars.reverse().join('');
return result;
}
/**
* 使数字可读。如:1004213 -> '1,004,213'
* @param number
* @param divChar 分割字条符
*/
export function readableNum(number: number, divChar = ',') {
if (String(number).length <= 3) {
return String(number);
}
if (number < 0) {
return '-' + division(String(-1 * number), 3, divChar);
}
return division(String(number), 3, divChar);
}
现在来写针对该文件里的 readableNum 函数的单元测试。首页考虑的事:测试文件放到哪里呢?为了不对工程本身造成影响,不能放到 ./assets 目录下。可以在工程根目录下新建一个 test 目录,建完后,如下:
.
├── assets
│ ├── Scene
│ ├── Script
│ │ └── util
│ │ └── readableNum.ts
│ └── Texture
├── __tests__
├── creator.d.ts
├── jsconfig.json
├── project.json
└── tsconfig.json
咱们写的单元测试文件都会放到该目录下。
在 jest 中,测试文件名与被测试文件名相同,文件名中间加上 tests,比如 readableNum.ts 的测试文件名应该是:readableNum.test.ts;然后保持相同的目录结构。基于这样的规则,我们新建文件:./__tests__/util/readableNum.test.ts:
.
├── assets
│ ├── Scene
│ ├── Script
│ │ └── util
│ │ └── readableNum.ts
│ └── Texture
├── __tests__
│ └── util
│ │ └── readableNum.test.ts
├── creator.d.ts
├── jsconfig.json
├── project.json
└── tsconfig.json
如果报错 执行:npm i -D typescript
参考:https://forum.cocos.org/t/cocoscreator/95482
其他:知乎1:https://zhuanlan.zhihu.com/p/344474850
2:https://www.cnblogs.com/laolieren/p/cocos_creator_unit_test_with_jtest.html
47, Rosa26 FlpO ER ref priligy review
priligy at walgreens Vancomycin hydrochloride is effective in the treatment of staphylococcal endocarditis
Dewdog on September 06, 2017 order priligy