如何在Rust Cargo中生成crate测试调用的干运行日志?

zi8p0yeb  于 2023-06-06  发布在  Go
关注(0)|答案(1)|浏览(145)

我试图扩大现有的板条箱。当我运行标准的板条箱测试时,其中一些失败了。crate创建者广泛地使用了宏和迭代器来创建测试。我无法解码正在运行的实际测试是什么,因此我可以跟踪正在发生的事情来调试测试失败。cargo test的输出不涉及板条箱中的任何现有函数。
有没有一种方法可以创建一个空运行日志,记录运行cargo测试时预期的调用?我希望能够看到所有的测试调用,将执行没有实际运行的测试。
我尝试过手动跟踪代码来重新创建测试。此外,使用RUST_BACKTRACE=1也没有让我更接近。我无法辨别测试是如何生成的,以便从输出中反向创建它。

bz4sfanl

bz4sfanl1#

如果您将--list选项传递给测试工具-即运行

cargo test -- --list

然后你会看到所有的测试名,这是所有的测试函数的路径。也就是说,如果foo::bar::baz在列表中,则必须有(宏展开后)一个函数

#[test]
fn baz() {}

可以在foo::bar模块中找到。然而,这并不能告诉您该函数中的 * 代码是什么,只是告诉您它存在,就像运行测试一样--这是测试工具所拥有的所有信息,因此这是它能给予您的最好的试运行。
为了找出宏生成的测试运行的代码,您必须理解宏,或者展开它们。rust-analyzer提供了一个“Expand macro recursively”命令,可以帮助实现这一点。

相关问题