Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何实现基于时间的测试?_Ios_Testing - Fatal编程技术网

Ios 如何实现基于时间的测试?

Ios 如何实现基于时间的测试?,ios,testing,Ios,Testing,我有一个与服务器通信并接收XML数据的应用程序。应用程序根据XML中的某些日期在内部状态之间移动 我想为应用程序编写一些测试代码,但在设置测试时是否有任何机制来设置系统时间,然后在测试运行时更改系统时间 我知道用于设置系统时间的API是私有的,但这是针对应用程序的,这不是针对应用程序的测试代码,因此SenTestCaseCase中是否有一些现有的机制来执行类似的操作?充其量也很难 当然,最理想的是某种Mac黑客,它会在iOS模拟器中反映出不同的时基,但我从未听说过这样的事情 如果做不到这一点,你

我有一个与服务器通信并接收XML数据的应用程序。应用程序根据XML中的某些日期在内部状态之间移动

我想为应用程序编写一些测试代码,但在设置测试时是否有任何机制来设置系统时间,然后在测试运行时更改系统时间

我知道用于设置系统时间的API是私有的,但这是针对应用程序的,这不是针对应用程序的测试代码,因此SenTestCaseCase中是否有一些现有的机制来执行类似的操作?

充其量也很难

当然,最理想的是某种Mac黑客,它会在iOS模拟器中反映出不同的时基,但我从未听说过这样的事情

如果做不到这一点,你就必须“钩住”你的应用程序。首先(简单部分)查找
[NSDate date]
的所有用法以及相关的“从现在起”用法,并替换为对MyNSDate的引用。此版本的NSDate将钩住“timeIntervalSinceReferenceDate”类方法,并向其提供虚假的时间值


最困难的部分是,不知何故,你的应用程序对所有计时器都很敏感。我不知道你会怎么做。

你能重构你的代码,使其不依赖于系统时间,而是将datetime值作为类的函数参数或属性吗?有时这是一个简单的解决方案。我可以对这样的代码进行一些单元测试,但我需要进行一些整体系统测试。我可以修改XML,使它们之间的时间间隔为几秒钟,这样测试代码就可以在短时间内转换状态,但要确定,我仍然需要能够在测试运行之前重复设置时间。