By default, kcov includes all sources files, including test functions, in its code coverage results. This skews the reported coverage rate. How do I tell kcov to exclude test functions?
For example:
#[test]
fn foo() {
...
}
kcov reports coverage data for foo
, but I want to exclude it.
Have your testing code in different files and use the kcov
arguments --exclude-path=./test
(for the integration tests) or --exclude-pattern=_test.rs
(if you move all your tests for foo.rs into foo_test.rs).
Another way is to use the kcov
argument --exclude-region='#[cfg(test)]:#[cfg(testkcovstopmarker)]'
and make sure that each file either only has tests at the end and no non-test code following it or adds the stop marker #[cfg(testkcovstopmarker)]
with the necessary unused definition after it to make rustc
happy. (kcov
finds the start and end string for a region anywhere in a line.)
(There is also the possibility to exclude lines based on a string they contain, but that won't work for excluding tests in Rust.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With