यह पेज rust_test
मॉड्यूल बनाने के बारे में बुनियादी जानकारी देता है
जो रस्ट टेस्ट हार्नेस का इस्तेमाल करता है.
एक बुनियादी रस्ट टेस्ट लिखना
डिवाइस पर और ऑन-होस्ट रस्ट टेस्ट के लाइव उदाहरण के लिए, देखें
keystore2 Android.bp, और
या external/rust/crates
डायरेक्ट्री में मौजूद अलग-अलग क्रेट में से किसी एक को ढूंढा जा सकता है.
rustc के --test
फ़्लैग का इस्तेमाल करके, rust_test
मॉड्यूल बनाया गया है, जिससे टेस्ट तैयार होते हैं
#[test]
एट्रिब्यूट के साथ मार्क किए गए कोड से बाहर चुनें. ज़्यादा जानकारी के लिए, यह देखें
रस्ट रेफ़रंस टेस्टिंग एट्रिब्यूट
दस्तावेज़.
टेस्ट मॉड्यूल को इस तरह परिभाषित करें:
rust_test {
name: "libfoo_inline_tests",
// Specify the entry point of your library or binary to run all tests
// specified in-line with the test attribute.
srcs: ["src/lib.rs"],
// Tradefed test suite to include this test in.
test_suites: ["general-tests"],
// Autogenerate the test config
auto_gen_config: true,
rustlibs: [
"libfoo",
],
}
TEST_MAPPING
फ़ाइल में, जांचों की सूची शामिल है. हालांकि, ऐसा करना ज़रूरी नहीं है, लेकिन
अगर आप कोई TEST_MAPPING फ़ाइल बनाते हैं, तो इसमें शामिल किए गए परीक्षणों में
प्री-सबमिट टेस्ट होते हैं. इन्हें atest
का इस्तेमाल करके शुरू किया जा सकता है.
आप TEST_MAPPING दस्तावेज़ देख सकते हैं
ज़्यादा जानकारी के लिए, लेकिन libfoo_inline_tests
उदाहरण के लिए, इसे
TreHugger पर अपने टेस्ट रन चालू करने के लिए, पहले से सबमिट करें:
{
"presubmit": [
{
"name": "libfoo_inline_tests",
},
]
}
ध्यान दें कि rust_test_host
मॉड्यूल पहले से सबमिट करने की सुविधा में डिफ़ॉल्ट रूप से तब तक चलते हैं, जब तक कि
unit_tests:
को false
पर सेट किया गया है. इसलिए, आपको इनका एलान करने की ज़रूरत नहीं है
TEST_MAPPING
फ़ाइलों में.
auto_gen_config
और test_suites
प्रॉपर्टी कैसे काम करती हैं, इस बारे में ज़्यादा जानने के लिए,
सेटिंग सेक्शन देखें
टेस्ट डेवलपमेंट वर्कफ़्लो के दस्तावेज़ की समीक्षा की गई है.
रस्ट टेस्ट की अहम प्रॉपर्टी
rust_test
मॉड्यूल, rust_binary
मॉड्यूल से प्रॉपर्टी इनहेरिट करता है. इनके बारे में यहां बताया गया है
बाइनरी मॉड्यूल
करें.
नीचे दी गई टेबल में बताई गई प्रॉपर्टी,
अहम सामान्य प्रॉपर्टी
जो सभी मॉड्यूल पर लागू होते हैं. ये खास तौर पर Rust
टेस्ट मॉड्यूल या rust_test
मॉड्यूल टाइप के लिए खास व्यवहार दिखाता है.
- test_harness: बेहतर इस्तेमाल, डिफ़ॉल्ट रूप से 'सही' पर सेट होती है.
अगर आपका rust_test
अपना टेस्ट हार्नेस लागू करता है और आपने ऐसा नहीं किया है, तो इसे 'गलत' पर सेट करें
पहले से मौजूद रस्ट टेस्ट हार्नेस का इस्तेमाल करना होगा (दूसरे शब्दों में, इसे 'गलत' पर सेट करना होगा)
--test
फ़्लैग को rustc पर नहीं भेजा जाएगा).
rust_library और rust_test के बीच डुप्लीकेशन से बचें
नेस्ट किए गए मॉड्यूल के ज़रिए इनलाइन रस्ट टेस्ट का इस्तेमाल करने पर, आपको डुप्लीकेट कॉपी मिल जाता है
आपकी Android.bp
फ़ाइल में. समस्या यह है कि आपको डिपेंडेंसी की सूची बनानी होगी
दो बार, एक बार rust_library
और एक बार rust_test
के लिए:
rust_library {
name: "libfoo",
srcs: ["src/lib.rs"],
rustlibs: [
"libx",
"liby",
"libz",
],
}
rust_test {
name: "libfoo_inline_tests",
srcs: ["src/lib.rs"],
test_suites: ["general_tests"],
rustlibs: [
"libx",
"liby",
"libz",
],
}
हर rust_test
मॉड्यूल में वही डिपेंडेंसी मिलेगी जो
संबंधित rust_library
मॉड्यूल. अलग-अलग मॉड्यूल के बीच एक जैसा अनुभव देने के लिए,
rust_defaults
मॉड्यूल में, डिपेंडेंसी को सिर्फ़ एक बार लिस्ट किया जा सकता है:
rust_defaults {
name: "libfoo_defaults",
srcs: ["src/lib.rs"],
rustlibs: [
"libx",
"liby",
"libz",
],
}
rust_library {
name: "libfoo",
defaults: ["libfoo_defaults"],
}
rust_test {
name: "libfoo_inline_tests",
defaults: ["libfoo_defaults"],
test_suites: ["general_tests"],
}
इस तरह, लाइब्रेरी और टेस्ट मॉड्यूल हमेशा एक ही डिपेंडेंसी का इस्तेमाल करेंगे.