Я создал единичный тест для метода, это метод, который я тестирую.Xcode, тестирование метода, XCTAssert не распознает true
- (BOOL)isValidCoords:(NSString*)strCoords{
NSArray* mutarrReadLines = [strCoords componentsSeparatedByString:@";"];
if(mutarrReadLines.count != 3){
NSLog(@"Coord failed count test,%@",strCoords);
return false;
}
else if([mutarrReadLines[0] doubleValue] > 89 || [mutarrReadLines[0] doubleValue] < -89){
NSLog(@"Coord failed lat test,%@",strCoords);
return false;
}
else if([mutarrReadLines[1] doubleValue] > 179 || [mutarrReadLines[1] doubleValue] < -179){
NSLog(@"Coord failed lon test,%@",strCoords);
return false;
}
else{
return true;
}
}
В принципе, он возвращает false, если параметр не является допустимой координатой.
Это мой тест:
- (void)testIsArrayOfValidCoordsWithValidCoords
{
NSString *input = @"1;1;2015";
BOOL actualResult = [GPSCoordsTable isValidCoords:input];
XCTAssertTrue(actualResult == true);
}
Я проверил, что «1; 1; 2015» является действительным коорд в запущенной программе, и она работает. Я даже изменил метод isValidCoords так, чтобы каждый возвращаемый путь был истинным. Я сделал невозможным, чтобы возвращаемое значение было ложным. Тем не менее тест все еще терпит неудачу и говорит, что возвращаемое значение не соответствует действительности.
Objective-C использует 'YES' /' NO' вместо 'true' /' false'. Также, если вы используете 'XCTAssertTrue (actualResult);'? – trojanfoe
Сделано обе эти изменения. Все еще не удается. Это не похоже на то, чтобы отличать true/false и yes/no. В любом случае, он говорит, что метод вернулся 0, и он ожидал 1. – SlashThingy
Что вы сделали, чтобы отладить это? NSLog 'actualResult'? Добавьте NSLog в путь 'return true; 'и убедитесь, что он попал? –