如何在Rust中运行特定的单元测试?

co2*_*f2e 7 unit-testing rust rust-cargo

我在一个名为的软件包中有单元测试,school-info并且有一个名为的测试函数repeat_students_should_not_get_full_marks

我可以通过运行模块中的所有测试cargo test --package school_info

cargo test test-name将匹配并运行测试,其中包含test_name尽管没有帮助。

如何仅repeat_students_should_not_get_full_marks运行测试而不运行所有测试?我在文档中找不到执行此操作的命令。

Öme*_*den 5

使用cargo test test-nametest-name开头的过滤器测试。它可能可以运行多个测试。测试功能是否存在mod并不重要,它仍然能够执行多个测试。

您可以通过添加-- --exact为参数来避免这种情况 。

如果您的测试不在任何mod中,则可以像这样简单地执行:

cargo test test_fn_name -- --exact
Run Code Online (Sandbox Code Playgroud)

否则,您需要提供具有完整名称空间的测试:

cargo test test_mod_name::test_fn_name -- --exact
Run Code Online (Sandbox Code Playgroud)

对于您的情况,解决方案将是:

cargo test --package school_info repeat_students_should_not_get_full_marks -- --exact
Run Code Online (Sandbox Code Playgroud)

  • 不确定这在过去几年中是否发生了变化,但是“cargo test test-name”不会过滤以“test-name”开头的测试,而是过滤包含“test-name”的测试。 (2认同)
  • @Jim 你使用“cargo”来执行测试吗?或者`rustc`?如果您使用“rustc”,则需要先编译源代码:“rustc --test src/test_file.rs”,然后通过运行编译的二进制文件来执行测试,例如:“.\test_file.exe --exact test_name” (2认同)