2015-04-24 2 views
0

Я создал единичный тест для метода, это метод, который я тестирую.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 так, чтобы каждый возвращаемый путь был истинным. Я сделал невозможным, чтобы возвращаемое значение было ложным. Тем не менее тест все еще терпит неудачу и говорит, что возвращаемое значение не соответствует действительности.

+0

Objective-C использует 'YES' /' NO' вместо 'true' /' false'. Также, если вы используете 'XCTAssertTrue (actualResult);'? – trojanfoe

+0

Сделано обе эти изменения. Все еще не удается. Это не похоже на то, чтобы отличать true/false и yes/no. В любом случае, он говорит, что метод вернулся 0, и он ожидал 1. – SlashThingy

+0

Что вы сделали, чтобы отладить это? NSLog 'actualResult'? Добавьте NSLog в путь 'return true; 'и убедитесь, что он попал? –

ответ

0

Ничего, я получил его работу. Оказывается, Xcode - это клоун, который представляет вам бессмысленные сообщения об ошибках.

Первая проблема: я пытался вызвать метод из контроллера представления, который я забыл инициализировать. Оказывается, если вы это сделаете, это не сбой или не скомпилируется, но ничего не делает.

Во-вторых, как только я попытался инициализировать контроллер, я получил странные ошибки о «символах, недоступных для X86-64» или что-то в этом роде. Проблема в том, что все мои файлы .m исчезли из «Источники компиляции» в настройках проекта.

+0

Пожалуйста, добавьте решение проблемы, для будущих пользователей, сталкивающихся с аналогичными проблемами. – Cristik

+0

Хорошо, но я сомневаюсь, что у кого-нибудь будет такая проблема. – SlashThingy

+0

Вы никогда не знаете, кто может иметь очень похожую ситуацию, как ваша :) – Cristik

Смежные вопросы