4 个版本 (2 个破坏性更新)
0.3.0-alpha | 2022年4月27日 |
---|---|
0.2.1-alpha | 2022年4月16日 |
0.2.0-alpha |
|
0.1.1-alpha | 2022年3月21日 |
0.1.0-alpha | 2022年3月18日 |
#467 在 测试
51KB
811 行
Substance Framework
Substance Framework 是一个针对 Rust 和 cargo 的 [no_std]
测试框架,即使对于自定义目标也能正常工作。它允许你在仅使用 Core
的项目中执行单元测试(无需为目标构建 sdt
)。该框架依赖于一些 nightly 特性,以提供一套完整系统,为你处理大部分繁琐工作。
任何需要无 std
支持的目标(最小化目标或自定义系统)的项目都可以使用此项目,以避免需要像不稳定手册中描述的那样重新实现测试运行器。
功能
- 提供用于单元测试的
no_std
运行器 - 以友好的界面显示结果
- 处理真正的 panic 并终止所有测试
- 提供一个简单的宏,可以放在测试函数上
- 提供一组替代默认断言的断言
子项目
- substance-macro (必需):提供与框架一起使用的所有必需宏
- substance-runner (必需):提供主要的测试运行器
简介
#![feature(custom_test_frameworks)]
#![test_runner(substance_framework::test_runner)]
#[macro_use]
extern crate substance_framework;
#[macro_use]
extern crate substance_macro;
#[cfg(test)]
mod tests {
#[substance_test]
fn test_equals() {
sf_assert_eq!(0, 0);
}
#[substance_test]
fn test_non_equals() {
sf_assert_ne!(0, -1);
}
#[substance_test]
fn test_lower() {
sf_assert_lt!(0, 1);
}
#[substance_test]
fn test_lower_or_equals() {
sf_assert_le!(0, 0);
}
#[substance_test]
fn test_greater() {
sf_assert_gt!(7, -1);
}
#[substance_test]
fn test_greater_or_equals() {
sf_assert_ge!(0, -1);
}
#[substance_test]
fn test_is_true() {
sf_assert!(53 != 54);
}
#[substance_test]
fn test_failure() {
sf_assert!(53 == 54);
}
#[substance_test]
fn test_failure_with_msg() {
sf_assert!(53 == 54, "I'm a bad little test");
}
#[substance_test("Should_panic")]
fn test_should_fail() {
sf_assert!(false);
}
#[substance_test("Ignore")]
fn test_is_true_to_ignore() {
sf_assert!(false, "shouldn't be visible");
}
#[substance_test("Should_panic")]
fn test_panic() {
panic!();
}
#[substance_test("Should_panic")]
fn test_panic_with_message() {
panic!("YEAAAAAA");
}
#[substance_test("Should_panic")]
fn test_panic_with_arguments() {
panic!("{}{}{}", "Y", "E", "AAAAAA");
}
#[substance_test("Should_panic", "Ignore")]
fn test_panic_ignored() {
panic!();
}
}
最低支持的Rust版本
您必须使用至少Rust nightly-2022-02-12版本,因为该包依赖于一些不稳定的功能。这些功能是提供测试运行器和处理安全管理的panic处理器的必需品。
路线图
-
提供宏以简化该库的使用 => 第一迭代
-
提供断言的宏替换(默认使用panic实现直接)
-
获取UI升级 => 使用
libc
包访问STDOUT -
支持JUnit-like XML报告生成 => 基本系统
-
提供Setup()和TearDown()
-
实现完整的XUnit系统
-
提供一个全面的声明性系统来构建任何断言
-
找到一种优化运行时间的方法(《core》不提供线程支持)
-
等等。
依赖项
~1.5MB
~38K SLoC