تستکردن در Android
بر اساس Testing، اکنون به نحوه عملکرد unit testها در AOSP خواهیم پرداخت. از ماژول rust_test
برای تست های واحد خود استفاده کنید:
testing/Android.bp:
rust_library {
name: "libleftpad",
crate_name: leftpad",
srcs: ["src/lib.rs"],
}
rust_test {
name: "libleftpad_test",
crate_name: "leftpad_test",
srcs: ["src/lib.rs"],
host_supported: true,
test_suites: ["general-tests"],
}
testing/src/lib.rs:
#![allow(unused)] fn main() { //! Left-padding library. /// Left-pad `s` to `width`. pub fn leftpad(s: &str, width: usize) -> String { format!("{s:>width$}") } #[cfg(test)] mod tests { use super::*; #[test] fn short_string() { assert_eq!(leftpad("foo", 5), " foo"); } #[test] fn long_string() { assert_eq!(leftpad("foobar", 6), "foobar"); } } }
اکنون می توانید تست را با
atest --host libleftpad_test
خروجی به شکل زیر است:
INFO: Elapsed time: 2.666s, Critical Path: 2.40s
INFO: 3 processes: 2 internal, 1 linux-sandbox.
INFO: Build completed successfully, 3 total actions
//comprehensive-rust-android/testing:libleftpad_test_host PASSED in 2.3s
PASSED libleftpad_test.tests::long_string (0.0s)
PASSED libleftpad_test.tests::short_string (0.0s)
Test cases: finished with 2 passing and 0 failing out of 2 test cases
توجه کنید که چگونه فقط ریشه crate کتابخانه را ذکر میکنید. تستها به صورت بازگشتی در ماژولهای تودرتو یافت میشوند.