Bu sayfada, rust_test
modülü oluşturma hakkında temel bilgiler verilmektedir.
bir test paketidir.
Temel paslanma testi yazma
Cihaz üzerinde ve ana makine üzerinde Rust testinin canlı örneği için
keystore2 Android.bp
veya external/rust/crates
dizinindeki kasalardan birini bulabilirsiniz.
rust_test
modülü, testler oluşturan rustc'ın --test
işaretini kullanarak derleme yapar
#[test]
özelliğiyle işaretlenmiş kod yok. Daha fazla bilgi için Rust Referans Test Özellikleri dokümanlarına bakın.
Aşağıdaki gibi bir test modülü tanımlayın:
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
dosyası testlerin listesini içerir. Zorunlu olmasa da bir TEST_MAPPING dosyası oluşturursanız bu dosyaya eklediğiniz testler göndermeden önce testlerde çalıştırılır ve atest
kullanılarak çağrılabilir.
TEST_MAPPING dokümanlarına bakabilirsiniz.
görebilirsiniz, ancak libfoo_inline_tests
örneğinde, şunu ekleyin:
testinizin TreeHugger'da çalıştırılmasını sağlamak için presubmit'i gönderin:
{
"presubmit": [
{
"name": "libfoo_inline_tests",
},
]
}
unit_tests:
false
olarak ayarlanmadıkça rust_test_host
modüllerinin varsayılan olarak göndermeden önce çalıştığını unutmayın. Bu nedenle, bunları TEST_MAPPING
dosyalarında belirtmeniz gerekmez.
auto_gen_config
ve test_suites
özelliklerinin işleyiş şekli hakkında daha fazla bilgi için
Ayarlar bölümüne bakın
daha fazla bilgiyi Test Geliştirme İş Akışı belgesinde bulabilirsiniz.
Önemli Paslanma testi özellikleri
rust_test
modülleri, İkili Modüller sayfasında açıklandığı gibi rust_binary
modüllerinden özellikleri devralır.
Aşağıdaki tabloda tanımlanan özellikler,
Sık kullanılan önemli özellikler
geçerli olacak iki yöntem vardır. Bunlar, Rust test modülleri için özellikle önemlidir veya rust_test
modülü türüne özgü benzersiz bir davranış sergiler.
- test_harness: Gelişmiş kullanım; varsayılan olarak true değerini alır.
rust_test
kendi test donanımınızı uyguluyorsa ve yerleşik Rust test donanımını kullanmanız gerekmiyorsa bu değeri false olarak ayarlayın (yani, bu değeri false olarak ayarladığınızda --test
işaretçisi rustc'ye geçmez).
rust_library ile rust_test arasında yinelemelerden kaçının
İç içe yerleştirilmiş modüller aracılığıyla satır içi Rust testlerini kullandığınızda ilgili kopya
Android.bp
dosyanız. Sorun, bağımlılıklarını rust_library
için bir kez, rust_test
için bir kez olmak üzere iki kez listelemeniz gerektiğidir:
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",
],
}
Her rust_test
modülü, ilgili rust_library
modülüyle aynı bağımlılıkları listeler. Modüller arasında tutarlılık sağlamak için bağımlılıklarını bir rust_defaults
modülünde yalnızca bir kez listeleyebilirsiniz:
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"],
}
Bu sayede, kitaplık ve test modülü her zaman aynı bağımlılıkları kullanır.