我正在爲動畫編寫一個單元測試。動畫是可旋轉的簡單旋轉,具有無限的持續時間(啓動畫面)。Android單元測試當活動有動畫
當我開始進行單元測試時,每個測試似乎都要等到動畫完成,因此它們會阻塞infinte,當我將持續時間設置爲1時,它會全部通過,導致動畫快速結束。
我該如何重寫,所以測試不等待動畫結束?
我正在爲動畫編寫一個單元測試。動畫是可旋轉的簡單旋轉,具有無限的持續時間(啓動畫面)。Android單元測試當活動有動畫
當我開始進行單元測試時,每個測試似乎都要等到動畫完成,因此它們會阻塞infinte,當我將持續時間設置爲1時,它會全部通過,導致動畫快速結束。
我該如何重寫,所以測試不等待動畫結束?
我假設你打算測試動畫以外的行爲。
將動畫從想要測試的代碼的路徑移出,您可能會受益最多。這意味着將其他代碼 - 不依賴於動畫的代碼 - 移出活動。如果不在Activity之外,那麼至少在Activity生命週期方法(onCreate(),...)之外。然後您可以檢查此行爲而不運行任何行爲。更好的辦法是在不啓動Activity的情況下運行該行爲(不要調用onCreate())。
您遇到的問題是當您將代碼直接放入框架擴展點時會發生什麼情況的特例:您的代碼隨後與框架混雜在一起,並且您按順序運行某些您不關心的東西運行你在做關心的部分。所以不要這樣做。將代碼放入不依賴框架的類中,然後使用框架擴展點(本例中爲Activity)將Android連接到代碼。活動知道你的代碼存在;你的代碼對Android依然無知。現在像你的動畫的東西不能阻礙。