#测试 #cargo #二进制 #cargo 子命令 #cargo 测试

nightly bin+lib cargo-is-tested

确保您的项目经过高质量测试!

2 个版本

0.1.1 2023 年 1 月 2 日
0.1.0 2023 年 1 月 2 日

#614Cargo 插件

MIT 许可证

28KB
451

cargo-is-tested


cargo-is-tested 是一种检查您的哪些项目已测试以及哪些未测试的方法,非常可配置,并提供了一个与 Git 钩子一起使用的脚本友好 API。

此外,它还使用 ✨ 美观的颜色 ✨ 来报告错误。

您还可以阅读手册以获得更友好的指南。

示例

检查当前目录中的所有函数是否已测试。

$ cargo is-tested .
# Cargo.toml
# [...]

[dependencies]
is_tested = "0.1.1" # Check crates.io for the current version of the crate.

# [...]
// src/main.rs

#! is-tested functions
// Yes, it uses shebangs to enable testing and flags!

use is_tested::is_tested;

#[is_tested("test/myfunction_testing_path.rs")]
fn my_function() {
	// [...]
}

然后,它将检查 test/myfunction_testing_path.rs 文件是否存在,如果不存在,则输出错误。

如果文件存在,程序将对您的测试执行所有 lint 检查,以确保最佳质量。例如,lint emptiness 将检查您的函数是否不为空。

安装和使用

要开始使用 cargo-is-tested,请安装二进制文件。

$ cargo install cargo-is-tested

现在 了解您可以在测试中应用的所有 lint。您还可以使用 strict 来激活它们所有(目前,推荐使用)

随着时间的推移,将添加更多 lint。


一旦您知道要应用哪些 lint,导入属性 is_tested,然后选择一个结构体、函数或任何您想要测试的项目,并将该属性添加到该项目中,如下所示:

结果应该是这样的

#! is-tested strict

use is_tested::is_tested;

#[is_tested("tests/mystruct.rs")]
struct MyStruct<'a> {
	string: &'a str
}

别担心,该属性不会更改您的代码,它只是为后续解析器提供一个标记,表示您正在测试该项目。


现在是运行解析器的时候了,它将读取检查所有测试项目是否都经过测试,并使用lints确定正确的代码质量。

// tests/mystruct.rs

use mycrate::MyStruct;

fn main() {
	// [...]
}
$ cargo is-tested .

这将检查所有测试是否编写良好。您可以使用标志自定义您的体验,例如,使用--structs检查所有结构体都有关联的测试,或者使用--test,如果确认所有测试,则自动运行cargo test


星标关注者

Stargazers repo roster for @blyxyas/cargo-is-tested

许可证

cargo-is-tested使用MIT许可证,2023。您可以通过LICENSE了解更多关于许可证的信息。

依赖

~4–16MB
~166K SLoC