Code Coverage arrived with Xcode 7. It can help us visualize which parts of our code are not being tested enough (or at all). Let's dive in:
Before we can take advantage of Code Coverage, we'll need to enable it for our project. It's off by default.
We'll begin by editing our scheme, then selecting Test in the sidebar, then enabling the Gather coverage data checkbox.
Now we'll run our tests by going to Product > Test in the menu (or pressing U). Then we can check out the test log where we'll find a new βCoverageβ tab.
Xcode will display all the functions in our code with a bar graph indicating how well βcoveredβ they are by our tests (We can mouse over to get an exact percentage). In our case, we are at 0%, since we don't have any tests. Yikes! Let's fix that by adding a simple test for a function on our PersonViewModel
:
func testFullName() {
let person = Person(firstName: "Han", lastName: "Solo")
let personVM = PersonViewModel(person: person)
XCTAssertEqual(personVM.fullName, "Han Solo")
}
If we run our tests again, and check the Coverage tab, we can see we now have 50% test coverage for our tiny example project.
Last but not least, Xcode will also give us a heads up with a red shaded area in the right gutter on lines of code that aren't covered by our tests. Neat!