They run locally, on simulator, on device and in CI.
Unit tests
GHUnit: http://gabriel.github.com/gh-unit/
OCMockito: https://github.com/jonreid/OCMockito
OCHamcrest: https://github.com/hamcrest/OCHamcrest
Pros
- GHUnit support for asynchronous operations
- Ease of use of OCMockito and OCHamcrest
Cons
?KIF
https://github.com/square/KIFPros
- Run fast and consistently
- Easy access to the application objects since the tests are written in Objective C
- Extensible
Cons
- Tests language is not QA/Client friendly
Extension for long tap / press
As a new method of UIView+KIFAdditions (thanks to: http://blog.dimaj.net/content/howto-long-press-kif ) :
- (void)longTapAtPoint:(CGPoint)point withDelay:(NSInteger)delay andCompletion:(void(^)(void)) completion
{
// Handle touches in the normal way for other views
UITouch *touch = [[UITouch alloc] initAtPoint:point inView:self];
[touch setPhase:UITouchPhaseBegan];
// Create the touch event and send it to the application
UIEvent *event = [self _eventWithTouch:touch];
[[UIApplication sharedApplication] sendEvent:event];
// Perform long touch
dispatch_after( dispatch_time( DISPATCH_TIME_NOW, NSEC_PER_SEC * delay), dispatch_get_current_queue(), ^(void){
[touch setPhase:UITouchPhaseEnded];
[[UIApplication sharedApplication] sendEvent:event];
// Dispatching the event doesn't actually update the first responder, so fake it
if ([touch.view isDescendantOfView:self] && [self canBecomeFirstResponder]) {
[self becomeFirstResponder];
}
if (completion) completion();
});
// Release the touch
[touch release];
}
Calaba.sh
http://calaba.shPros
- Tests in Gherkin langage, BDD Cucumber
- Powerful CSS like selectors
- Gesture recording and playback : you can record complex gesture
- iOS and Android support
Cons
- Issues with the execution of tests where the interaction with the UI stopped working, did not find why (Button tap not working in some scenarios only)
- Execution of test action not very reliable: gestures stop working, maybe issues with the embedded calaba.sh server.