我有一个常数
const SIZE: usize = 8;
字符串
我还有一堆测试要做有些测试是针对这个常数大于8的情况,有些测试是针对它小于8的情况,因为我测试了一些特殊情况。我怎么能跳过基于此的测试?例如,一个这样的测试使用类型u8
,如果SIZE
大于8,则不能使用。基于How to conditionally skip tests based on runtime information?,没有办法在运行时做到这一点,但是既然我在编译时就拥有了一切,那么有没有一种方法看起来像
#[cfg(SIZE <= 8)]
型
编译这个测试只有当常数是在正确的范围?
测试示例
#[cfg(test)]
mod test {
use super::SIZE;
#[test]
fn will_panic_if_size_small() {
assert!(SIZE > 8);
}
#[test]
fn will_panic_if_size_big() {
assert!(SIZE <= 8);
}
}
型
1条答案
按热度按时间qvtsj1bj1#
不幸的是,这仍然是不可能的。宏不能计算
const
s,因为它们是在常量计算之前执行的,所以它等效于运行时条件。