#unit-testing #rust #code-coverage #rust-cargo #kcov
Вопрос:
Когда я хочу протестировать покрытие C , я могу создать свою программу -fprofile-arcs -ftest-coverage
, запустить все тесты и запустить gcov
, чтобы получить покрытие.
Однако, когда дело доходит до Ржавчины, я совершенно теряюсь. Что я хочу сделать, так это запустить следующие тесты(на моем Mac) и получить покрытие всех кодов ржавчины в path components/raftstore
cargo test --package tests --test failpoints cases::test_normal
cargo test --package tests --test failpoints cases::test_bootstrap
cargo test --package tests --test failpoints cases::test_compact_log
Из этого поста следует, что сначала беги cargo test --no-run
, затем беги kcov
. Однако, когда я действительно это делаю, kcov блокируется навсегда.
Затем я нахожу то, что называется cargo kcov
, кто обеспечивает --test
. Однако , когда я бегу cargo kcov --test failpoints cases::test_normal
так, как я делаю cargo test
, я получаю ошибку
error: cargo subcommand failure
note: cargo test exited with code exit status: 101
error: no test target named `failpoints`
Я перепробовал много способов выяснить это, однако ни один из них не работает, поэтому мне интересно, смогу ли я получить здесь некоторую помощь.
Я знаю , что есть и другие инструменты покрытия, такие как tarpaulin
и grcov
, в настоящее время я их пробую. Это также приемлемо, если существуют четкие решения с помощью этих инструментов покрытия. Тем не менее, я все еще хочу знать, что не так с kcov
и. cargo-kcov
Комментарии:
1.
--test failpoints
относится к модульным тестам? Дляcargo-kcov
--test
параметра , по-видимому, следует указать интеграционный тест. Учебник довольно устарел иcargo kcov
давно не обновлялся. Вот недавнее руководство по охвату .