在我的應用程序(基於Gradle的Android Studio項目)中,我需要在測試下運行時創建具有不同名稱的文件。例如,在製作中,我想使用名稱com.myapp.file並在測試時運行,com.myapp.file。 測試。如何判斷我的Android應用是否由InstrumentationTestRunner運行?
我想做的事是這樣:
String packageName = getApplicationContext().getPackageName(); MyFile file = new MyFile(packageName);
我希望下試運行(./gradlew connectedInstrumentTest)與正常時的的packageName會自動將不同。我檢查了我的清單,它顯示我的測試清單有一個包名以.test結尾,但它在運行時似乎不會傳遞給應用程序。
是否有到任何一個辦法:
1)更新我的gradle產出或項目文件運行測試
- 或 -
2)當使用不同的包名是有辦法編程式地講,比我的應用程序正在測試中運行?
因此,在測試運行器中,您可以運行安裝和拆卸方法。爲什麼不在這些方法中建立文件名,並且在使用文件名的地方,將其作爲參數接受,而不是從包名稱中推斷出來? –
是的,這個工程。這是我目前正在使用的解決方案。我發佈這個問題是爲了尋找替代方案。我想要一個替代方案的原因是我不得不修改我的類的公共構造函數來接受文件名,我不希望這樣做。如果這是有道理的,我想隱藏這個實現細節。 –
我能理解。不幸的是,我不認爲有一種方法可以告訴你正在進行測試,但我不是100%的,因爲這是我不會做出答案的問題。但是,我會考慮從共享首選項文件中獲取文件名,並在測試設置中的文件中設置名稱。不要將它作爲參數接受,請從首選項中拉出名稱。只要確保在拆卸過程中更改名稱即可 –