Core Data Demo Recap » When you see something that can cause a key piece of your app to break, test it. » When testing core data, test the NSInMemoryStoreType so you always have a clean database. » Version your databases!
Objective-C Mock Demo Recap » Make a fake thing » Tell it what to do » Pass it to the thing you want to test » Make sure the tested thing reacted properly
Swift Inline Class Stubs/Spies func testThingDoesStuff() { class StubbedThing : Thing { override func methodBeingStubbed() -> String { //Don't call super! return "A Known String!" } } let stub = StubbedThing() let tested = ObjectUnderTest() objectUnderTest.thing = stubbed let result = tested.doSomethingThatEventuallyCallsMethodBeingStubbed() XCTAssertTrue(result == "A Known String!") }
BDD Demo Recap: » Use very descriptive test names. » Test the end result, not necessarily how you got there. » Use the XCTest methods you already know. » Use comments if you need the structure of given/ when/then.
Kif Pros » Write your UI tests in Objective C! » Uses Accessibility, so you make your app accessible in the bargain » Get to the bit you need to test » The most widely used library » Very backwards compatible
Kif Cons » Slow (can be sped up now!) » Can be flaky on CI servers » Some folks have had issues with lookup changing the view hierarchy » Very backwards compatible
UI Testing Recap » If you're swapping out your app delegate for tests, make sure you put it back for UI tests » Centralize your localized strings in a convenience class to make strings easier to test » UI and non-UI tests should be separate targets » Add -AppleLanguages "\(en\)" arguments to the test bit of your application's scheme » Duplicate your scheme and update for every language you support
Official Summary Slide™ » Testing lets you refactor confidently » Testing helps you find out immediately when you broke something so it's easier to fix. » Test as much as you can, however much that is. » Find the testing ideology that works best for you. » UI Testing can give you a great opportunity to see how all the pieces of your app work together. » Have both humans and robots test your app.
Things from me or my former employer! #humblebrag » https://github.com/designatednerd/ TestingPlayground » https://github.com/designatednerd/FlickrSearcher » https://github.com/designatednerd/ DNSiOSLocalizationTestHelpers » https://github.com/vokal/VOKMockUrlProtocol » https://github.com/vokal/Mocktrofit
Photo Credits » Angry mob by Robert Course-Baker: https:// www.flickr.com/photos/[email protected]/3645211083 » Robot by Logan Ingalls: https://www.flickr.com/ photos/plutor/847695350 » Lock ("Hodgepodged") by David Goehring https:// www.flickr.com/photos/carbonnyc/4740626368/ » All images of Kif from Futurama used without permission. Sorry, Fox.