单元测试
Sui 提供了一个测试框架,以便在 Move 的开发过程中进行单元测试。Move 单元测试本质上是一个带有 #[test]
注释的无参数公共函数。
由于 sui move new
创建了 tests
文件夹和一个示例测试文件,我们将其重命名为 castle_tests.move
并取消文件内的注释内容:
cd tests
mv move_castle_tests.move castle_tests.move
#[test_only]
module move_castle::castle_tests {
// 取消此行的注释以导入模块
// use move_castle::move_castle;
const ENotImplemented: u64 = 0;
#[test]
fun test_move_castle() {
// pass
}
#[test, expected_failure(abort_code = ::move_castle::castle_tests::ENotImplemented)]
fun test_move_castle_fail() {
abort ENotImplemented
}
}
不要忘记将模块名称重命名为 module move_castle::castle_tests
。
#[test_only]
注释表示 castle_tests
模块仅存在于测试范围内,不会在包构建和发布时包含。此注释也可以应用于函数。
返回包的根目录,并执行以下命令以运行测试:
sui move test
执行后,您将看到测试输出,如果一切正常,结果应为 OK
。
作为附加步骤,尝试将 assert!
语句中的条件修改为 false
,并观察输出。这将帮助您了解测试框架如何处理失败情况。