2013-04-05 2 views
3

У меня есть UIbutton в моем приложении. Когда я нажимаю кнопку, он удаляет последний объект в NSMutableArray. Для этого я хочу написать модульные тесты. Пожалуйста, дайте мне свое предложение.Единичный тест в IOS

Я использую этот код для зная, когда клик на UIButton была выполнена:

[viewControllerObject.backButton1 sendActionsForControlEvents:UIControlEventTouchUpInside]; 

Спасибо, Рики.

+0

wt u want ?? u хочу создать метод кнопки для последнего объекта из массива – iPatel

+0

Я использую модульное тестирование, чтобы проверить, что эта кнопка нажата, используя, например, XCTAssertTrue и т. д. –

ответ

1

Вы можете сделать это несколькими различными способами. Предложение было бы наблюдать за этим замечательным tutorial

Видео объясняет, как выполнить модульный тест в UIKit.

+0

Одинокая ссылка считается плохим ответом (см. [faq # deletion]), так как это само по себе само по себе, и ** целевой ресурс не гарантированно будет жить в будущем **. [Было бы желательно] (http://meta.stackexchange.com/q/8259) включить здесь основные части ответа и предоставить ссылку для справки. – j0k

1

XCode имеет встроенную поддержку тестов модулей. Если вы начнете новый проект, найдите галочку с надписью «Включить модульный тест». Если вы используете это, у вас будет папка с именем <project_name>Tests. Откройте там файл .m, и вы увидите метод - (void)testExample, где вы можете поместить свои тесты.

Для тестирования можно использовать ряд функций, например STAssertTrue и STAssertNotNil. Проверьте документы компании Apple здесь: https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/UnitTesting/03-Writing_Test_Case_Methods/writing_tests.html#//apple_ref/doc/uid/TP40002143-CH4-SW1

В вашем случае, вы могли бы, вероятно, сделать что-то вроде этого:

NSInteger arrayCount = mArray.count; 
[yourInstance performButtonAction]; 
STAssertEquals(arrayCount -1, mArray.count); 
+0

Как вызвать buttonAction от apptest.m до viewcontroller. – user1844142

+0

Поскольку тесты выполняются автономно, вы можете создать свой viewController в методе 'setup'. Таким образом, у вас есть локальная ссылка на него. –

3

На уровне «единицы» есть вы тестирования две вещи:

  • делает нажатие кнопки отправить метод действия?
  • ли метод действия удаляет последний объект из массива?

Игнорируйте первую проблему, это проблема Apple (или, честно говоря, это интеграционный тест). Второе простое, если вы думаете о процессе сборки, закона, утверждения:

  1. Соберите: постройте контроллер своего вида и его массив содержимого.
  2. Акт: вызов метода действия.
  3. Утверждение: убедитесь, что последний объект удален.
-(void)testRemovalOfLastObjectOnButtonAction 
{ 
    //... build and populate the view controller 
    id lastObject = [array lastObject]; 
    [viewController buttonTapped: sender]; 
    STAssertFalse([array containsObject: lastObject], @"Object %@ should be removed", lastObject);  
} 

Примечание Испытываю явно был ли удален последний объект, не был ли декрементируется граф: что может произойти, если любого объекта были удалены.

+0

Привет, ОМЗ, я получаю отказ теста, когда я выполняю вышеуказанный код. Правильно это или нет? – user1844142

+0

@ user1844142 что конкретно является провалом? Если это утверждение не выполняется, тогда ваш код не удаляет объект из массива. – 2013-04-05 13:55:27

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