我在我的應用程序中有很多功能是依賴於日期/時間的(例如「如果日期是x,顯示y」)我使用[NSDate date]來獲取用戶的當前日期/時間。通過手動更改我的iPhone上的日期/時間,但我想知道是否有編程方式覆蓋當前時間,以便我可以在模擬器中更快地測試在應用程序中設置iPhone日期/時間用於測試目的?
5
A
回答
3
您可以使用任何日期創建NSDate對象。/你想只是時間通過一個方法來獲得「當前」時間和在此方法中運行代碼,要麼返回生產真正的日期或您選擇進行測試的一些日期
0
dateByAddingTimeInterval:
返回一個新的NSDate對象,該對象被設置爲相對於接收者的給定秒數。
- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
參數 秒 的秒數添加到接收器。使用負數的秒數來讓返回的對象在接收者之前指定一個日期。 返回值 相對於接收方設置爲秒秒的新NSDate對象。返回的日期可能與接收者的表示不同。
來源:文檔:P
5
做的另一種方式是提供+(NSDate的*)日期的自定義實現。你可以使用JRSwizzle來修改這個類的方法。做一個小類別的NSDate的:在你想擁有固定的日期代碼
static NSTimeInterval seconds = 1300000000;
@interface NSDate (Fixed)
+ (NSDate *)fixedDate;
@end
@implementation NSDate (Fixed)
+ (NSDate *)fixedDate
{
return [NSDate dateWithTimeIntervalSince1970:seconds];
}
@end
然後執行以下操作:
NSError *error;
[NSDate jr_swizzleClassMethod:@selector(date) withClassMethod:@selector(fixedDate) error:&error];
NSLog(@"Date:%@", [NSDate date]);
日誌打印出這一點:
2011-09-01 11:35:27.844 tests[36597:10403] Date:2011-03-13 07:06:40 +0000
2
在NSDate
上創建類別並覆蓋+[NSDate date]
方法
+ (instancetype)date
{
return [NSDate dateWithTimeIntervalSince1970:100000]; // Replace with any date you want
}
相關問題
- 1. 從iPhone應用程序中知道設備中的日期和時間設置
- 2. 從UTC-5時區日期和時間獲取iPhone設備的時區日期和時間iPhone應用程序?
- 3. SKU不適用於在測試期間購買應用程序
- 4. 在iphone上測試iphone應用程序?
- 5. 在iPhone設備上測試應用程序項目
- 6. c#中的日期時間用於web應用程序
- 7. 測試iPhone應用程序
- 8. 測試iPhone應用程序
- 9. 如何在iPhone應用程序中顯示設備日期和時間?
- 10. 從應用程序設置系統日期和時間
- 11. 設置iPhone應用程序的失效日期
- 12. 在JUnit測試夾具中設置時間和日期
- 13. 如何獲得測試用於測試iphone layar應用程序的測試Layar?
- 14. 設置Android和iPhone日期時間
- 15. Rails應用程序設置和測試
- 16. 如何在邏輯應用程序中設置日期時間格式
- 17. 應用程序測試設置中的設置失敗
- 18. iphone應用程序設置
- 19. 在iPad上測試iPhone應用程序
- 20. 從iphone應用程序發送日期時間到web服務
- 21. 在iPhone應用程序設置睡眠時間
- 22. 在應用程序中存儲iPhone應用程序設置
- 23. 如何在iPhone應用程序中設置當前日期的Dateformat?
- 24. 在iPhone上測試應用程序,崩潰日誌在哪裏?
- 25. 如何從我的android應用程序調用日期時間設置屏幕?
- 26. 在單元測試期間在應用程序類中出錯
- 27. 如何添加日期字段到應用程序設置,如設置的日期/時間
- 28. 在iPhone應用程序設置的Xcode
- 29. iPhone和JSON:在JSON對象中編碼日期以用於iPhone應用程序
- 30. iPhone:如何在設置中獲取應用程序的條目?
我不認爲他想要一個測試框架方法,而是一個系統方法來對整個應用程序進行「前滾」測試。這就像當你測試一個非移動應用程序時,通過將桌面單元的系統時間設置爲1/1/2040之類的東西來查看是否會破壞某些東西。 – TechZen 2011-04-20 13:23:27