In a recent blog post we talked about how iOS Developers can enhance application development for iPhones and iPad by doing some performance tuning in Core Data. Now we want to look at some of the other enhancements developers can utilize as they develop apps for iOS 7.
While much of the Apple mobile community is still agog over the significant changes to the look and feel of the operating system with the advent of the flat design concept, developers know that the real magic is happening under the hood. There are a host of improvements to the developer’s toolset, and we want to take a closer look at a key improvement found in XCode 5 – The Unit Testing Framework.
XCode 5 is intended to make the job of an iOS developer a little bit easier. This isn’t to say that you can just bang out some code and call it a day, but rather that it makes it a heck of a lot easier to test units of code, and isolate problems in your code. In fact, Apple really pushes the concept of ‘test-driven development’ as a best practice. So let’s take a look at how to use the Test Navigator.
The Test Navigator allows the iOS Development Team to run a individual test, a subset of a specific test, or you can go hog-wild and run a suite of tests with a few clicks of the mouse.
To run a single test, click the arrow next to the method name and then select Product > Test. To run a test on a subset of test methods, simply select them in the test navigator and then choose Product > Perform Action > Run Test Methods.
Let’s say that you’ve found that you have a problem with your code – you’ll know it by the culprit being highlighted in red – but still… What do you do to fix it? The Assistant Editor can help you here.
With the Assistant Editor, an iOS developer can use the Test Classes and Test Callers categories to easily check the error in the given test case with code and tests placed side by side in the workspace window.
XCTest replaces the SenTestingKit and is included by default with the iOS 7 development kit. In many ways is seems that this is more of a rename vs a rebuild, as assertions being renamed from STxxxx to XCTxxxx, but it does seem to offer a better environment with the new continuous integration functionality.
XCTest enables iOS app developers to write tests that run on different Mac and iOS devices (like the iPhone, iPad Air and iPad mini) and simulate them from within XCode or from the command line.
Assertions Supported by XCTest
Short list of assertions supported by XCTest:
- XCTFail (format…)
- XCTAssertNil (a1, format…)
- XCTAssertNotNil (a1, format…)
- XCTAssert (a1, format…)
- XCTAssertTrue (a1, format…)
- XCTAssertFalse (a1, format…)
- XCTAssertEqualObjects (a1, a2, format…)
- XCTAssertEquals (a1, a2, format…)
- XCTAssertEqualsWithAccuracy (a1, a2, accuracy, format…)
- XCTAssertThrows (expression, format…)
- XCTAssertThrowsSpecific (expression, specificException, format…)
- XCTAssertThrowsSpecificNamed (expression, specificException, exceptionName, format…)
- XCTAssertNoThrow (expression, format…)
- XCTAssertNoThrowSpecific (expression, specificException, format…)
- XCTAssertNoThrowSpecificNamed (expression, specificExcepton, exceptionName, format…)
If you’re not sure what each of these assertions actually do, today is your lucky day! All you need to do to get a definition of an assertion is to Ctrl+Click on the assertion (Like “XTCAssertNoThrow”) and then click on “Jump to Definition”.
We hope that this helps you to get the most out of the XCTest in XCode 5. If so, do us a solid and share this post across your social networks. If not, tell us where you’re running into problems with the comment section below.