gpt4 book ai didi

unit-testing - 将特定测试编译成二进制文件

转载 作者:行者123 更新时间:2023-11-29 08:27:17 27 4
gpt4 key购买 nike

我想编译一个运行特定测试子集的二进制文件。当我运行以下命令时,它起作用了:

ubuntu@ubuntu-xenial:/ox$ cargo test hash::vec
Finished dev [unoptimized + debuginfo] target(s) in 0.11 secs
Running target/debug/deps/ox-824a031ff1732165

running 9 tests
test hash::vec::test_hash_entry::test_get_offset_tombstone ... ok
test hash::vec::test_hash_entry::test_get_offset_value ... ok
test hash::vec::test_hash_table::test_delete ... ok
test hash::vec::test_hash_table::test_delete_and_set ... ok
test hash::vec::test_hash_table::test_get_from_hash ... ok
test hash::vec::test_hash_table::test_get_non_existant_from_hash ... ok
test hash::vec::test_hash_table::test_override ... ok
test hash::vec::test_hash_table::test_grow_hash ... ok
test hash::vec::test_hash_table::test_set_after_filled_with_tombstones ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out

当我尝试运行 target/debug/deps/ox-824a031ff1732165 时,它会运行我所有的测试,而不仅仅是 hash::vec 中指定的 9。

我尝试运行 cargo rustc --test hash::vec 但我得到了error: no test target namedhash::vec.cargo rustc -- --test 有效,但会创建一个运行所有测试的二进制文件。如果我尝试cargo rustc -- --test hash::vec`,我得到:

   Compiling ox v0.1.0 (file:///ox)
error: multiple input filenames provided

error: Could not compile `ox`.

cargo rustc -h 表示您可以使用 --test 标志传递 NAME(--test NAME 仅构建指定的测试目标),所以我想知道“NAME”是什么以及如何传递它,所以我得到一个只运行 hash::vec 中指定的 9 个测试的二进制文件。

最佳答案

你不能,至少不能直接。

cargo test hash::vec 的情况下,hash::vec 只是与每个测试函数的完整路径匹配的子字符串 测试运行器被执行。也就是说,它绝对不会影响编译哪些测试,只会影响运行哪些测试。实际上,这个参数是传递给测试运行器本身的; Cargo 甚至不会自己解释它。

对于--test NAMENAME 是测试 的名称。如同,传递 --test blah 告诉 Cargo 在 tests/blah.rs 中构建和运行测试。它与 --bin NAME(对于 src/bin/NAME.rs)和 --example NAME(对于 examples/NAME.rs).

如果你真的只想编译特定的测试子集,我能想到的唯一方法是通过特性使用条件编译。对于希望能够启用/禁用的每个测试子集,您都需要一个包功能。

关于unit-testing - 将特定测试编译成二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44298242/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com