מבוא
אוטומציה של מובייל היא תהליך של אוטומציה של בדיקות של יישומי מובייל. זה עוזר להבטיח שהאפליקציה מתפקדת כמתוכנן ועומדת בתקני האיכות הרצויים לפני שהיא משוחררת לציבור. אחת הפלטפורמות המובילות לאוטומציה של מובייל היא Appium, כלי אוטומציה לבדיקות קוד פתוח ליישומי מובייל.
הבעיה
אחד האתגרים הנפוצים בשימוש ב-Appium הוא הקושי לשדרג לגרסה העדכנית ביותר של ערכת הפיתוח של Java (JDK), ובעיקר ל-JDK 17, בשל באג ב-cglib. cglib היא ספריית Java היוצרת פרוקסי דינמיים. Appium משתמשת בה ליצירת אובייקטי עמוד, שהם מחלקות המייצגות את המסכים והאלמנטים השונים של אפליקציית המובייל.
הבאג הזה מופיע בעת שימוש ב-Page Factory לאתחול אובייקט עמוד דרך הDecorator של Appium.
PageFactory.initElements(new AppiumFieldDecorator(driver), this);
הבעיה דווחה בפרוייקט ה-GitHub של Appium ויכולה להוות מכשול גדול עבור אלה שרוצים לנצל את התכונות והשיפורים האחרונים שמציע JDK 17.
הפתרון
למרבה המזל, יש פתרון לבעיה זו. על ידי הוספת ארגומנט ה-JVM הבא
--add-opens java.base/java.lang=ALL-UNNAMED
לארגומנטי שורת הפקודה של Surefire שלך:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M7</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
<argLine>
--add-opens java.base/java.lang=ALL-UNNAMED
</argLine>
</configuration>
</plugin>
פתרון זה מאפשר להשתמש ב-Appium עם JDK 17. ארגומנט JVM זה מורה לזמן הריצה של Java לאפשר גישה רפלקטיבית לחבילות שאינן מיוצאות, דרישה הכרחית כדי ש-cglib יעבוד עם JDK 17.
כדי להוסיף את ארגומנט ה-JVM ב-IntelliJ, יש לעבור לתצורת ההרצה ולהוסיף אותו תחת שדה אפשרויות ה-VM:
או שתוכל להתקין את התוסף JVM Arguments Setter. תוסף זה יוסיף אוטומטית את ארגומנטי ה-JVM הדרושים לפרויקט שלך, ויחסוך לך את הטרחה של הוספתם ידנית בכל פעם.
בדיקות מהנות!