作者:乔汝嘉 团队:坚果派
前言
“仓颉编程语言是一款面向全场景智能的新一代编程语言,主打原生智能化、天生全场景、高性能、强安全。融入鸿蒙生态,为开发者提供良好的编程体验。” ——摘自仓颉首页
本文以一个非常简单的例子,介绍一下坚果派三方库leap_year的实现,包括测试框架的简单使用。
public func isLeapYear(date: DateTime): Bool和public func isLeapYear(year: Int): Bool。

package com.nutpi.leap_year
对库的功能进行单元测试,保证基本功能正确,在之后迭代中做回归测试保证现有功能不被破坏。

main_test.cj文件用于编写测试用例。根据SDK自带的文档,找到这一页 Cangjie-0.51.4-windows-docs/docs/docs/libs/std/unittest_lib.html#编译选项---test-介绍 其中强调了,测试文件必须以_test.cj结尾。实际尝试之后,确定必须遵守这个规则,否则运行测试的按钮不会出现。.macrocall文件是@XXX的宏(@Test、@TestCase等)展开以后,编译器自动生成的文件。test,所以写成package com.nutpi.leap_year.test。接下去是测试宏的引用,文档里说的并不清晰,经过我的多次尝试,需要导入unittest.*和unittest.testmacro.*,分别对应@Test和@TestCase。最后是引入main.cj里的函数,对应好包名import com.nutpi.leap_year.isLeapYear
@Test装饰,方法要用@TestCase装饰。如果一切顺利,测试类和各个方法上方都会出现run|debug的字样,点击run或者debug来运行或者调试测试用例。跑测试用例之前,切记要ctrl+s保存一下当前文件改动,直接点击有可能修改无法生效。
@Expect来比较相等。@BeforeAll和@AfterAll来做准备和收尾工作,修饰的方法名可以为任意的。可以看到打印的log,如我们期待的行为。
main.cj文件,点击右上角三角按钮,运行打包。
CANGJIE LIBRARY工具栏,点击dependencies右侧加号。在弹出的文件夹选择窗中选leap_year项目的根目录。选择完成之后IDE会提示你是否重启LSP服务,一定记得选“是”重启一下,不然编辑器里面会找不到依赖库的引用。
isLeapYear()方法
