编写参数化测试
参数化测试是用不同的输入值多次运行的测试。当你想用一系列不同的输入测试一个函数, 或用一系列不同的预期输出测试一个函数时,这非常有用。Sui 的单元测试尚不支持原生的参数化测试。 要实现这一点,我们需要编写一些样板代码,以使用不同的输入值多次运行相同的测试。
#[test]
fun test_add() {
assert_eq!(add(1, 2), 3);
assert_eq!(add(2, 2), 4);
assert_eq!(add(3, 2), 5);
}
可以重写为:
#[test]
fun test_add() {
let test_cases = vector[(1, 2, 3), (2, 2, 4), (3, 2, 5)];
let i = 0;
while (i < vector::length(test_cases)) {
assert_eq!(add(a, b), expected);
i = i + 1;
}
}
随着 Move 即将引入宏函数,这将变得更加容易。
#[test]
fun test_add() {
let test_cases = vector[(1, 2, 3), (2, 2, 4), (3, 2, 5)];
vector::for_each(test_cases, |test_case| {
let (a, b, expected) = test_case;
assert_eq!(add(a, b), expected);
}
}