我刚刚开始使用OCUnitTesting。我不认为我的代码是错误的,但问题可能是我在路上的某个地方犯了一个小错误..我有一个功能
- (BOOL)tooManyCouplesForER:(NSMutableArray *)startfield
{
NSLog(@"Size %i", [startfield count]);
if ([startfield count] > 7) {
return true;
} else{
return false;
}
}
在我的ViewController StartfieldTableViewController
中。
我将UnitTests包含在我的项目中以及AppTests.h
中我做了
#import "StartfieldTableViewController.h"
和
@property (strong, nonatomic) StartfieldTableViewController *start;
在AppTests.m
我写了一个测试
- (void)testTooManyCouplesForER
{
NSMutableArray *testField = [[NSMutableArray alloc] initWithObjects:@"1", @"1", @"1", @"1", @"1", @"1", @"1", @"1", @"1", @"1", nil];
BOOL sum = [self.start tooManyCouplesForER:testField];
NSLog(@"BOOL = %@\n", (sum ? @"YES" : @"NO"));
STAssertTrue(sum, @"This should have returned true, but it returned false");
}
所以我希望测试通过,因为我给它一个包含10个元素的数组。它失败。所以我创建了NSLog,它在测试中确实没有,但是在运行时测试函数,使用完全相同的testField-array,这是真的。
感谢您的帮助。
答案 0 :(得分:0)
在单元测试中,请在执行
之前进行检查 BOOL sum = [self.start tooManyCouplesForER:testField];
self.start不是零。
STAssertNotNil(self.start,@"You forgot to set the controller")
BOOL sum = [self.start tooManyCouplesForER:testField];
我打赌它没有在单元测试中初始化,因此总和为零,测试失败。