12 个版本
0.4.2 | 2023年10月16日 |
---|---|
0.4.0 | 2023年3月2日 |
0.3.2 | 2022年12月1日 |
0.3.1 | 2022年6月10日 |
0.1.1 | 2018年9月26日 |
#121 in 测试
22KB
387 代码行
TAP:Test Anything 协议
->
作为 testanything
Crates 存在于 crates.io。
这个 Rust 库提供了生成和输出 Test Anything 协议结果的功能。请访问 testanything.org 获取更多信息。
使用方法
请查看 examples
文件夹中的示例。
简单
1..2
ok 1 Panda Bamboo
not ok 2 Curry Noodle
# Tree
# Flower
仅使用 alloc
(#[no_std]
)
要使用此 Crates 中的 alloc 在 #[no_std]
中,使用
testanything= {版本= "*",默认-功能= false,功能= ["alloc"] }
测试
cargo test
许可证
lib.rs
:
Test Anything 协议 (TAP) 是一种用于表达测试结果的纯文本格式。自1987年发明以来,它被用来帮助测试 Perl。借助这个 Crates,这个非常有用的工具被带到了 Rust 中!
此 Crates 提供了生成和输出 TAP 流所需的机制。
有关可执行示例,请参阅 examples
目录。
示例
生成 TAP 流的第一种方法是 TapSuite
机制。当您正在迭代一个集合并将其映射到 TapTest
结果集合时,这会非常有用。我们提供了一个 TapSuiteBuilder
和一个 TapTestBuilder
来使这个过程尽可能完美。
看看这个 TapSuite
use testanything::tap_test_builder::TapTestBuilder;
use testanything::tap_suite_builder::TapSuiteBuilder;
use std::io;
// Build a failing test
let failing_tap_test = TapTestBuilder::new()
.name("Example TAP test")
.passed(false)
.diagnostics(&vec!["This test failed because of X"])
.finalize();
// Construct a test result suite
let tap_suite = TapSuiteBuilder::new()
.name("Example TAP suite")
.tests(vec![failing_tap_test])
.finalize();
// Print TAP to standard output in one chunk
match tap_suite.print(io::stdout().lock()) {
Ok(_) => {}
Err(reason) => eprintln!("{}", reason),
}
第二种方法使用TapWriter
工具,可以认为是直接方法。这种机制允许您从程序中的任何地方将半定制化的TAP流写入STDOUT。由于TAP规范要求将TAP输出到STDOUT,因此TapWriter
在流接口上没有使用任何花哨的功能。
看看这个TapWriter
!
use testanything::tap_writer::TapWriter;
let writer = TapWriter::new("Example TAP stream");
// Write the plan out. This can come before or after the test results themselves.
writer.plan(1, 6);
// Give me the name as a diagnostic line
writer.name();
// Print out some test results
writer.ok(1, "Panda");
writer.ok(2, "Bamboo");
writer.ok(3, "Curry");
// This one failed, so explain why with a diagnostic line
writer.not_ok(4, "Noodle");
writer.diagnostic("The above test failed because of XYZ reason");
writer.ok(5, "Tree");
// Uh oh! something went horribly wrong and we need to stop before
// we print out the results from test 6!
writer.bail_out_with_message("Destabilized warp core! Can't continue!");