Как я могу получить покрытие для проверки груза?

#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 давно не обновлялся. Вот недавнее руководство по охвату .