כתיבת בדיקה ללא מכשיר בצד המארח ב-TF

בדף הזה מוסבר איך לכתוב בדיקה בצד המארח שלא מחייבת המכשיר, כמו בדיקה שרצה במכונה של 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.