tec*_*man 1 static objective-c dispatch ios ios7
在我的一个方法中,我使用的是dispatch_once,我为其创建了一个静态变量.该方法按预期工作,单独运行时单元测试成功通过.但是当我同时运行测试时,其中一个测试失败,因为方法中的静态变量保持了值.
我的方法:
+ (NSString *)myMethod
{
static NSString *dayOfTheWeek;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Do something.
dayOfTheWeek = @"Monday";
if (!dayOfTheWeek)
{
dayOfTheWeek = @"Sunday";
}
});
return dayOfTheWeek;
}
Run Code Online (Sandbox Code Playgroud)
题:
所以我有单元测试来测试"星期一"和另一个单元测试来测试"星期天".如果我在XCODE上单独执行这两个测试,它们会通过,但是当我一起执行它们时,"Sunday"的测试失败,因为我的静态变量仍然保持值"Monday".
有没有办法可以清除方法级静态变量只是为了测试目的?或者还有其他方法可以成功执行这两项测试吗?
条件逻辑几乎从不属于dispatch_once()块.如果某种逻辑在不同的执行中可能有所不同,那么每次执行程序时可能需要更频繁地重新评估一次.目前尚不清楚逻辑是什么,但是它是否像"今天是什么?" 那么,如果您的程序运行多天会发生什么?
| 归档时间: |
|
| 查看次数: |
449 次 |
| 最近记录: |