בדף הזה מוסבר איך לכתוב בדיקה בצד המארח שלא מחייבת המכשיר, כמו בדיקה שרצה במכונה של Linux GCE. (לקבלת פרטים על כדי לכתוב בדיקה המבוססת על מארח שמחייבת מכשיר, עיינו במאמר כתיבת בדיקה מבוססת-מארח באיחוד סחר.)
סוגי בדיקות בצד המארח
אפשר להריץ כמה סוגים של בדיקות בצד המארח באמצעות איחוד שירותי הסחר (TF).
בדיקות מקוריות (gtest)
יצירת בדיקות מותאמות (gtests) כדי לבדוק פלטפורמה. אם לבדיקה לא נדרש מכשיר, יש להריץ אותו host; הבדיקה תפעל מהר יותר בדרך הזו. כדי להגדיר בדיקות כאלה כך שיפעלו מארח בדיקה, משתמשים בהרצת TF HostGTest.
זוהי הגדרה לדוגמה של בדיקת TradFed:
<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>
הגדרת הבדיקה מריצה בדיקת gtest (hello_world_test) על מארח. הבדיקה לדוגמה אפשר ליצור הגדרה אוטומטית. אלא אם הבדיקה שלך דורשת הגדרה או ניקוי מיוחדים, אפשר להסתמך על ההגדרה של בדיקה אוטומטית כדי ליצור בדיקת TF תקינה הגדרות אישיות.
כדי להגדיר gtest בצד המארח ולהפעיל יצירת config לבדיקה אוטומטית, מגדירים
host_supported
עד true
אינץ'
Android.bp
, כמו hello_world_test.
לקבלת מידע נוסף על כתיבת בדיקה של נייטיב, אפשר לעיין במאמר הוספת בדיקה מותאמת חדשה דוגמה
בדיקות של מארח JAR
בדיקות מארח של JAR (Java), כמו JUnit, הן בדיקות שלא צריכות לרוץ במכשיר שלכם ושמספקות קוד הכיסוי של פרויקט Java שלכם. ניתן להגדיר בדיקות כאלה כך שיפעלו בבדיקה מארח באמצעות קובץ העזר HostTest.
הגדרת בדיקה לדוגמה של TradFed
<configuration description="Executes HelloWorldHostTest"> <test class="com.android.tradefed.testtype.HostTest" > <option name="jar" value="HelloWorldHostTest.jar" /> </test> </configuration>
הגדרת הבדיקה מפעילה בדיקת JUnit של צד המארח, של HelloWorldHostTest. שימו לב שהגדרת הבדיקה שלמעלה אפשר ליצור אותה באופן אוטומטי. אלא אם הבדיקה שלך דורשת הגדרה או ניקוי מיוחדים, את יצירת התצורה לבדיקה אוטומטית כדי ליצור בדיקה מתאימה של TradeFed. הגדרה אישית.
לפרטים נוספים על כתיבה של בדיקת מארח JAR, אפשר לעיין הדף JAR (Java) Host Tests (בדיקות מארח).
בדיקות מארחות של Java מבודדת (IWA)
ניתן להריץ בדיקות Java ללא מכשירים בסביבת בידוד בעלות ביצועים מועטה. עם זאת, יש כמה שיקולים חשובים שצריך לקחת בחשבון לפני שבוחרים להשתמש הסביבה.
- זוהי יחידת ההרצה המוגדרת כברירת מחדל לבדיקות יחידת Robolectric ו-JUnit
- המסחר האלקטרוני תומך רק בבדיקות JUnit בסביבת הבידוד.
- יש תמיכה רק ביחסי תלות שמקושרים באופן סטטי. אין הצהרה על יחסי תלות
עם
lib
כלולים בנתיב הכיתה. - תוכנת הבידוד תציב את רכיב ה-shim באפליקציה ואת צנצנת הבדיקה בנתיב הכיתה.
- בכל הרצת בדיקה מבוצעת רמה מסוימת של תקורה קבועה בכל הרצת בדיקה.
הגדרה לדוגמה של בדיקה ל-Tredified (מבודדת)
<configuration description="Executes HelloWorldHostTest"> <test class="com.android.tradefed.testtype.IsolatedHostTest" > <option name="jar" value="HelloWorldHostTest.jar" /> </test> </configuration>
הגדרה לדוגמה של Sung ליצירה אוטומטית
במקום ליצור באופן ידני את הגדרות הבדיקה כמו שלמעלה, שירות Sung יכול ליצור את ההגדרה באופן אוטומטי באמצעות הצהרה כמו הדוגמה הזו.
java_test_host { name: "HelloWorldHostTest", test_options: { unit_test: true, }, test_suites: ["general-tests"], srcs: ["test/**/*.java"], static_libs: [ "junit", ], }
בדיקות רובולקטריות
בבדיקות רובולקטריות נעשה שימוש באותו מכשיר הרצה שבו נעשה שימוש בבדיקות המארח המבודדות, עם אפשרויות.
- האפשרות
robolectric-resources
מפעילה כמה אפשרויות לשורת הפקודה שספציפית ל-Robolectric שיועבר לתהליך המשנה וגם יוסיף את מבנה העץ שלandroid-all
של תת-תהליך במחלקה. שתי השיטות האחרות הן שיטות מומלצות, אבל האפשרות הזו חובה הרצת בדיקות Robolectric עם הצלחה כלשהי. - האפשרות
java-folder
מאפשרת לשנות את זמן הריצה של Java שמשמש את תהליך המשנה. הדבר בשל העדפה של גרסאות Java מסוימות שייתכן שלא מתאימות את ה-JVM המועדף על מערכת המארח. - האפשרות
exclude-paths
מאפשרת למערכת להריץ את תהליך המשנה למנוע טעינה של מודולים מסוימים בכלל, וזה שימושי כאשר JAR מגיע עם מחלקות מיותרות שעלולות לגרום לשגיאות בטעינה.java.
היא החרגה נפוצה, כדי להימנע מהצגתSecurityException
חריגות.
הגדרה רובולקטרית לדוגמה
<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>
הגדרה לדוגמה של התכונה Sung ליצירה אוטומטית של Robolectric
במקום ליצור באופן ידני את הגדרות הבדיקה כמו למעלה, Sog יכול ליצור את ההגדרה באופן אוטומטי באמצעות הצהרה כמו הדוגמה הזו.
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
אם לוגיקת הבדיקה כתובה ב-Python, משתמשים בסוג ה-build python_test_host
כדי ליצור קובץ par שיכול
מופעל על ידי TF PythonBinaryHostTest
.
הגדרת בדיקה לדוגמה של TradFed
<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>
ההגדרה של חבילת הבדיקה
כדי שהבדיקה בצד המארח תהיה נגישה ל-TF ב-build נתון, מגדירים את
הגדרה של מודול בדיקה `test_suites`
`general-tests`
:
test_suites: ["general-tests"],
עם ההגדרה הזו, הבדיקה נארזת בחבילה של general-tests.zip
בתאריך
היעד test_suites
.