Bu sayfada, test için bir referans noktası gerektirmeyen ana makine tarafı testi (ör. Linux GCE örneğinde çalıştırılan bir test) etkinleştirebilirsiniz. (Daha fazla bilgi için cihaz gerektiren, ana makineye dayalı bir test yazma, bkz. Ticaret Federasyonu'nda ana makineye dayalı test yazın.)
Ana makine tarafı test türleri
Ticaret Federasyonu aracılığıyla çeşitli türlerde ana makine taraflı testler çalıştırabilirsiniz (TF) olarak değiştirin.
Yerel (gtest) testleri
Yerel testler oluşturma (gtests) kullanarak bir platformu test edebilirsiniz. Test için bir cihaz gerekmiyorsa testi bir cihazda çalıştırın. host; test bu şekilde çok daha hızlı yapılır. Bu tür testleri HostGTest TF çalıştırıcısını kullanın.
Bu, örnek bir TradeFed test yapılandırmasıdır:
<configuration description="Runs hello_world_test."> <option name="null-device" value="true" /> <test class="com.android.tradefed.testtype.HostGTest" > <option name="module-name" value="hello_world_test" /> </test> </configuration>
Test yapılandırması, bir ana makinede gtest testi (hello_world_test) çalıştırır. Örnek test yapılandırma otomatik olarak oluşturulabilir. Testiniz için özel bir kurulum veya temizleme gerekli olmadığı sürece, doğru TF testi oluşturmak için otomatik test yapılandırması yapılandırmanın üç yolu vardır.
Ana makine tarafı gtest'i yapılandırmak ve otomatik test-yapılandırma oluşturmayı etkinleştirmek için
host_supported
- true
inç
Android.bp
(ör. hello_world_test).
Yerel test yazma hakkında daha fazla bilgi için bkz. Yeni Bir Yerel Test Ekleme Örnek.
JAR ana makine testleri
JAR (Java) ana makine testleri, örneğin JUnit, bir cihazda çalıştırılması gerekmeyen ve kod sağlayan, kapsamıyla ilgilidir. Bu tür testler, bir testte çalışacak şekilde yapılandırılabilir kullanarak ana makine oluşturma HostTest'e gidin.
Örnek TradeFed test yapılandırması
<configuration description="Executes HelloWorldHostTest"> <test class="com.android.tradefed.testtype.HostTest" > <option name="jar" value="HelloWorldHostTest.jar" /> </test> </configuration>
Test yapılandırması, HelloWorldHostTest'in ana makine tarafında JUnit testini çalıştırır. Yukarıdaki test yapılandırmasının otomatik olarak oluşturulabilir. Testiniz için özel kurulum veya temizleme gerekmiyorsa uygun TradeFed testi oluşturmak için otomatik test yapılandırması oluşturma yapılandırma.
JAR ana makine testinin nasıl yazılacağıyla ilgili daha fazla bilgi için JAR (Java) Ana Makine Testleri sayfası.
Yalıtılmış Java ana makine testleri
Cihazsız Java testleri, düşük bir performans maliyetiyle izolasyon ortamında çalıştırılabilir. Bununla birlikte, bu araçları kullanmayı seçmeden önce dikkat edilmesi gereken bazı önemli noktalar vardır: bahsedeceğim.
- Bu, Robolectric ve JUnit birim testleri için kullanılan varsayılan çalıştırıcıdır
- Tradefed, izolasyon ortamında yalnızca JUnit testlerini destekler.
- Yalnızca statik olarak bağlı bağımlılıklar desteklenir. Bağımlılık bildirilmedi
lib
ile sınıf yoluna dahil edilir. - Yalıtım çalıştırıcısı, yalnızca shim çalıştırıcıyı ve test jar'ınızı sınıf yoluna yerleştirir.
- Bu koşucu ile yürütülen her test çalıştırması başına belirli bir miktarda sabit ek yük vardır.
Örnek Tradefed test yapılandırması (ayrılmış)
<configuration description="Executes HelloWorldHostTest"> <test class="com.android.tradefed.testtype.IsolatedHostTest" > <option name="jar" value="HelloWorldHostTest.jar" /> </test> </configuration>
Otomatik oluşturma için örnek Shortg yapılandırması
Shortg, yukarıdaki gibi test yapılandırmasını manuel olarak oluşturmak yerine bir açıklama ekleyin.
java_test_host { name: "HelloWorldHostTest", test_options: { unit_test: true, }, test_suites: ["general-tests"], srcs: ["test/**/*.java"], static_libs: [ "junit", ], }
Robolektrik testler
Robolektrik testlerde, izole ana makine testleriyle aynı çalıştırıcı kullanılır ve birkaç özel seçenekleri vardır.
robolectric-resources
seçeneği, Robolectric'e özel birkaç komut satırı seçeneğini etkinleştirir veandroid-all
ağacının ağaç yapısını da alt işlem sınıf yolunu sunar. Diğer ikisi en iyi uygulamalar olsa da bu seçenek, zorunlu çalıştırmasına yardımcı oluyor.java-folder
seçeneği, alt işlem tarafından kullanılan Java çalışma zamanının değiştirilmesini sağlar. Bu çünkü Robolectric'in standart sürümle uyumlu olmayan belirli Java sürümlerini tercih etmesi ana makine sisteminin tercih edilen JVM'sineexclude-paths
seçeneği, alt işlem çalıştırıcının belirli modüllerin yüklenmesini önlemesini sağlar. Bu, JAR'ın yükleme hatalarına neden olabilecek fazladan sınıflar içerdiği durumlarda yararlıdır.java.
,SecurityException
istisnalarının atılmasını önlemek için yaygın bir hariç tutmadır.
Örnek Robolectric yapılandırması
<configuration description="Executes a Sample Robolectric Test"> <option name="java-folder" value="prebuilts/jdk/jdk9/linux-x86/" /> <option name="exclude-paths" value="java" /> <option name="use-robolectric-resources" value="true" /> <test class="com.android.tradefed.testtype.IsolatedHostTest"> <option name="jar" value="RobolectricExampleTest.jar" /> </test> </configuration>
Robolectric otomatik oluşturma için örnek Shortg yapılandırması
Yukarıdaki gibi test yapılandırmasını manuel olarak oluşturmak yerine Shortg aşağıdaki örnektekine benzer bir bildirim kullanarak yapılandırmayı otomatik olarak oluşturabilir.
android_robolectric_test { name: "HelloWorldRoboTest", srcs: [ "src/**/*.java", ], // Include the testing libraries static_libs: [ "mockito-robolectric-prebuilt", "platform-test-annotations", "testng", "truth-prebuilt", ], instrumentation_for: "HelloWorldApp", }
Python testi
Test mantığı Python'da yazılmışsa şunlara benzer bir par dosyası oluşturmak için python_test_host
derleme türünü kullanın:
TF PythonBinaryHostTest
tarafından çalıştırılır.
Örnek TradeFed test yapılandırması
<configuration description="Config to run atest unittests"> <test class="com.android.tradefed.testtype.python.PythonBinaryHostTest" > <option name="par-file-name" value="atest_unittests" /> <option name="test-timeout" value="2m" /> </test> </configuration>
Test paketi ayarı
Belirli bir derlemede TF tarafından ana makine taraf testinin erişilebilir olması için
`test_suites`
test modülü ayarını
`general-tests`
:
test_suites: ["general-tests"],
Bu ayarla, test şurada general-tests.zip
olarak paketlenir:
test_suites
hedefi.