最近5.2 preview 1發布了,想說可以開始來升級我的plugin。由於我的plugin有寫一些automation test來幫忙做unit test跟functional test,這樣我就可以省下一些QA的時間。只是在把Plugin升上5.2之後,突然發現之前寫的Automation Test都不會跑了。
在花了一些時間除錯之後,總算發現原因在哪了。結論是:Unreal在5.2之後有做以下幾個更改會影響到這個功能。
第一點:用來過濾來跑哪些Test的FilterPrefix原本是「Filter:」,在5.2的時候改成了「StartsWith:」,因此我們的的AutomationTest要調整成如下的型式:
-ExecCmds="automation List;RunTests StartsWith:Plugin+StartsWith:_Game+StartsWith:Project.Functional Tests;Quit"
第二點:有用ScreenShot功能的人會發現不會去比較之前留下來的ground truth image而是要求重新加入,以為整組功能壞光光,這是因為從5.2開始Default RHI變成了D3D12,我們可以在Log中發現下面的訊息:
LogRHI: Using Default RHI: D3D12
LogRHI: Using Highest Feature Level of D3D12: SM5
LogRHI: Loading RHI module D3D12RHI
由於系統會根據目前的FunctionalTest找下面的路徑出來比較:
${PROJECT_ROOT}\Test\Screenshots\UIScreenshotTestMap\BP_FunctionalUIScreenshotTest_BugReport_WBP_DialogueWindow\Windows\D3D11_SM5
因此我們只要把所有的Functional Test中的D3D11_SM5改成D3D12_SM5就能抓到需要比較的ground truth image,如下圖:

不過可以想見的是,如果我們把SM5調成SM6的話,那麼相對路徑也會變化,這邊在使用上就要特別注意。
升級完Plugin後,看到Automation Test全通過,嗯,感覺真好。



Leave a Reply