11 | 如何測試基於Unity3D引擎的游戲


轉載:https://airtest.doc.io.netease.com/tutorial/0_automated_testing/

11 | 如何測試基於Unity3D引擎的游戲

由於游戲的界面是通過游戲引擎渲染出來的,游戲界面沒有系統原生的控件信息,所以對於游戲,我們需要接入Poco-SDK才能獲取到游戲界面中的控件信息。下面以Unity開發的手游為例,介紹如何在Android和iOS平台進行連接。



11.1 Android 平台


  1. 從Poco SDK Repo將Unity3D這個文件夾克隆下來。 

  2. 將克隆下來的Unity3D文件夾放置於你的Unity項目的Assets/Scripts文件夾下。 

  3. 將Assets/Scripts/Unity3D目錄下以未用到的UI系統命名的文件夾刪除。例:假如您的項目使用的UI系統是UGUI,請將FairyGUI和NGUI兩個文件夾刪除,保留UGUI文件夾。

  4. 在Unity3D中打開您的項目,並將Unity3D/PocoManager.cs作為一個script component添加到您的GameObject中,通常情況下是您的主相機。 舉例:點擊demo這個場景下的Main Camera,會在右方出現inspector界面,點擊inspector界面當中的Add Component。在彈出的對話框中輸入Poco,選擇出現的Poco Manager這個選項。完成后會在inspector界面出現如圖所示的component。

  5. 點擊界面左上角File->Build Settings, 生成一個合適的安卓包,並安裝到您的手機上。 

  6. 啟動AirtestIDE,按照上文所述將AirtestIDE與您的手機鏈接,並啟動對應的游戲。 

  7. 在左下角的Poco輔助窗中選擇Unity模式,即可看到當前界面的UI樹結構:

  8. 在選擇Unity模式之后,Airtest IDE會自動插入Poco的初始化代碼: 


    之后的腳本編寫,就可以利用Poco提供的API對游戲界面上的元素進行操作了。 

    下面是一個簡單的測試用例。您可以從這里下載這個簡單的Unity3D小游戲。在安裝完成后,打開游戲后點擊Start再點擊drag drop會出現如下所示的界面。每將一顆星星拖動到屏幕中心的貝殼上,將得到20分;如果將5顆星星依次拖動到貝殼上,那將獲得100分。下面的腳本就是在測試依次拖動5顆星星是否會得到100分的分數。

from airtest.core.api import * auto_setup(__file__) from poco.drivers.unity3d import UnityPoco poco = UnityPoco() poco('btn_start').click() time.sleep(1.5) poco('drag_and_drop').click() shell = poco('shell').focus('center') for star in poco('plays').offspring('star'): star.drag_to(shell) time.sleep(1) assert poco('scoreVal').get_text() == "100", "score correct." poco('btn_back', type='Button').click() 

點擊運行腳本按鈕,就會得到如下所示的結果。



11.2 iOS平台


  1. 同樣的,先完成引擎SDK接入,然后通過Airtest IDE連接iOS手機; 

  2. 與Android不同的是,iOS Unity Poco的連接需要啟動兩個proxy,8100端口用於連接iOS手機,5001端口用於連接Poco-SDK的RPC端口。

iproxy 8100 8100 iproxy 5001 5001 

這里的iproxy相當於ADB中的forward。 

  1. 連接好iOS手機之后,選擇Poco輔助窗中的Unity模式,即可看到當前界面的UI樹結構:

    1. 之后即可通過Poco提供的API,對iOS上的游戲編寫自動化測試腳本了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM