0

我刚刚开始 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,在测试中确实是NO,但是在运行时测试函数,使用相同的testField-array,这是真的。

感谢您的帮助。

4

1 回答 1

0

在单元测试中,执行前检查

  BOOL sum = [self.start tooManyCouplesForER:testField];

那 self.start 不是零。

  STAssertNotNil(self.start,@"You forgot to set the controller")
  BOOL sum = [self.start tooManyCouplesForER:testField];

我敢打赌它没有在单元测试中被初始化,所以 sum 为 nil,并且测试失败。

于 2013-03-22T15:43:01.357 回答