Did you ever had that feeling that you fix one bug and it creates another two? Well it maybe because you are and you don't know because you are not adopting TDD
If you are already a Swift developer and want to be the best in the field this course is for you, Test Driven Development also known as TDD is a must have skill for any serious professional or anyone tired of expend precious time "hunting" for bugs.
Even the best programmer write bug codes, it is almost impossible to write the perfect code, even than, what work today may not work tomorrow, frameworks change, APIs change even the iOS every year we have a new one. Now how to find out if your old code is compatible with this new version? And if not what part isn't? Can you see how a little work before hand can make life much easier in the future?
TDD the concept of start development from the test phase, ensure that all the relevant parts of your code is tested, running the automated test ensure that the new changes you just made didn't create a bug in the old functions.
You may ask, but how really important is TDD? Until XCode 5 TDD was a optional check box when creating an app, in XCode 6 Apple decide that all apps should have TDD so they auto create the Unit tests for you (even if you didn't want to, good on you Apple).
Invest few hours now and few minutes while doing your applications and I promise you that you will save a lot of time and headaches in a short future, be it from clients that find that hidden bug, from your boss that give you long speeches every time one of your items get reopened or from your mother because that app you made to her for mothers day is crashing.
What is TDD? Why should I learn it? How TDD is going to be beneficial to me? How is this course going to help me?
This and many more questions are answered in this lecture.
Before we start I want to get to know you a little better, let me know a little about you and your plans so I can direct this course and future courses to cover your preferences.
In this lecture we will learn how to create an application with the proper Unit Test Extension and UI Test Extension
In this lecture we will setup the UI using stack view and constraints so our app work across all different devices, it is very import to think about how the user is going to interact with our application since the begining don't matter how simple the application is.
In this lecture we will be adding the IBOutlets from the Textfields and necessary Labels and also the IBAction from the calculate button
Decoupled code is fundamental for testing, each piece of code should be responsible for one and only one thing, in this case CalculatorBrain Unit will be responsable to handle all the calculations for our application
In this lecture we will see how to start our testing, what the XCode symbols and functions means and how we use it.
In this class we will learn a some basic functions for test driven development. We will use XCTAsset to check the values passed to a function and write meaningful messages when this asserts are not as we expected.
In this lecture we will check for nil values, there are many XCTAssert options to use equals, greater than, equals to, not equals to, less than and so on, you just need to find the one that suits best your needs.
In this lecture we will see how to create and test completion blocks checking not just for one but for two different values. As we expect a Float to return nil and a specific error message to also be returned.
In this lecture we will see how to measure the average time your function takes to execute and how to set (and reset) a baseline to comparison in the future
In this lecture we will learn how to add a new test Unit and make it accessible from the main project, we will also introduce a new class to hold the brains of our online calculator
Sometimes test for the fail cases is almost more important (if not more) than test for the fail success cases, make sure that your functions are not returning unexpected values when it receives values out of range, or difference of expect is fundamental to keep your app running without any bugs.
In this lecture we will learn how to create an TDD call to the API call and request the result of the division.
Starting from iOS9 and OS10.11 a new security feature called App Transport Security (ATS) is available to apps and is enabled by default in any new app resulting to any attempts to connect using insecure HTTP to fail. In this lecture we will learn how to configure your info.plist with keys like NSAppTransportSecurity and NSAllowsArbitraryLoads to allow this connections again.
Some times errors can happen in asynchronous calls, that means that the test will finish before the result is back and the XCTAssert will never be executed. We can solve this using expectations, we can set expectations and wait for this expectations to be fulfilled, unfulfilled expectations result in unceseful tests.
When errors happen asynchronous we need to set expectations and wait for this expectations to be fulfilled, in this lecture we will learn how to create this expectations, set a time so it can be fulfilled and how to add more tests as we need inside the expectations
How to set it on and off, how to hide and show the results and how to read the reports that XCode generate for us
So far the calculate button functionally has been empty, in this lecture we will read the values entered in the text fields, execute the calculations and add the results into the result label
In this lecture we will learn more about the UITest unit and add a simple test to check if we are in the main screen as we expected
In this lecture we will learn how to programatically find elements in the UI such as Text Fields, Labels, Buttons, we will also learn how to tap in this elements and type values in the keyboard
In this lecture we will learn how to use the "Record UI Test" in XCode so we can create the UI Testing just by use the app on the simulator and let XCode create the necessary code for us.
Show us how much did you learn in this course taking this quiz
All necessary files to create your app are in the download area of this lecture. This include the image used for the background and source code.