#intel-sgx #sgx-sdk #confidential-computing #unit #unit-testing #applications #write

nightly sgx_tunittest

Rust SGX SDK 允许使用 Rust 编程语言编写 Intel SGX 应用程序

10 个稳定版本

1.1.1 2020年4月2日
1.1.0 2019年12月19日
1.0.9 2019年9月16日
1.0.8 2019年6月11日
0.9.8 2018年3月27日

#1829硬件支持

27 每月下载量

自定义许可证

325KB
5K SLoC

注意

请访问我们的 主页 了解使用方法。谢谢!


lib.rs:

sgx_tunittest 用于在区域中进行单元测试。

要使用此包,首先需要导入 sgx_tstd 和此包中定义的断言宏,如下所示

#[macro_use]
extern crate sgx_tstd as std;
#[macro_use]
extern crate sgx_tunittest;

与 Rust 中的 #[test] 类似,单元测试函数需要接受零个参数并返回空值。只有当测试函数在没有 panic 的情况下返回时,一个测试才成功。

与 Rust 不同,我们不使用 #[test]#[should_panic] 等特性来声明单元测试函数。相反,要声明一个单元测试函数,只需将其实现为正常即可。

以下是一个示例单元测试函数

fn foo() {
    assert!(true);
    assert_eq!(1,1);
    assert_ne!(1,0);
}

要启动单元测试,应使用宏 rsgx_unit_test!。例如,假设我们有三个单元测试函数:foobarzoo。要开始测试,只需按以下方式编写

rsgx_unit_tests!(foo, bar, zoo);

sgx_tunittest 支持失败测试(必须 panic)。但它不提供 Rust 风格的(#[should_panic])。应使用宏 should_panic! 来断言会导致 panic 的语句。例如

fn foo_panic() {
    let v = vec![]
    should_panic!(vec[0]); // vec[0] would panic
}

这样,vec[0] 将 panic。但 should_panic! 捕获了它。因此,foo_panic 将通过单元测试。

依赖项

~0–285KB