------------------------- | Simple Calculator Tests | ------------------------- | Test Addition | | Test Subtraction | -------------------------
XCTest framework in iOS Swift - Mini App: Build & Ship
import XCTest @testable import YourAppModule class Calculator { func add(_ a: Int, _ b: Int) -> Int { // TODO: Implement addition return 0 } func subtract(_ a: Int, _ b: Int) -> Int { // TODO: Implement subtraction return 0 } } class CalculatorTests: XCTestCase { var calculator: Calculator! override func setUp() { super.setUp() // TODO: Initialize calculator } override func tearDown() { // TODO: Deinitialize calculator super.tearDown() } func testAddition() { // TODO: Test add method } func testSubtraction() { // TODO: Test subtract method } }
import XCTest @testable import YourAppModule class Calculator { func add(_ a: Int, _ b: Int) -> Int { return a + b } func subtract(_ a: Int, _ b: Int) -> Int { return a - b } } class CalculatorTests: XCTestCase { var calculator: Calculator! override func setUp() { super.setUp() calculator = Calculator() } override func tearDown() { calculator = nil super.tearDown() } func testAddition() { let result = calculator.add(2, 3) XCTAssertEqual(result, 5, "Addition should return the sum of two numbers") } func testSubtraction() { let result = calculator.subtract(5, 3) XCTAssertEqual(result, 2, "Subtraction should return the difference of two numbers") } }
This solution creates a simple Calculator class with two methods: add and subtract. Each method returns the correct arithmetic result.
The CalculatorTests class inherits from XCTestCase. It uses setUp() to create a new calculator instance before each test and tearDown() to clean up after tests.
Two test methods check the calculator's behavior: testAddition verifies that adding 2 and 3 returns 5, and testSubtraction verifies that subtracting 3 from 5 returns 2. The XCTAssertEqual function compares expected and actual results, showing a message if the test fails.
This approach helps ensure the calculator works correctly and teaches how to write basic unit tests with XCTest.
------------------------- | Simple Calculator Tests | ------------------------- | [check] Test Addition Passed | | [check] Test Subtraction Passed| -------------------------
Practice
XCTest framework in iOS development?Solution
Step 1: Understand XCTest role
XCTest is designed to help developers write tests that automatically verify if the app works as expected.Step 2: Compare options with XCTest purpose
Only To write automated tests that check app behavior describes writing automated tests, which matches XCTest's main use.Final Answer:
To write automated tests that check app behavior -> Option BQuick Check:
XCTest = Automated testing [OK]
- Confusing XCTest with UI design tools
- Thinking XCTest manages app navigation
- Assuming XCTest improves runtime speed
XCTestCase subclass?Solution
Step 1: Recall XCTest method naming rules
Test methods must start with 'test' and be declared as functions with no parameters.Step 2: Check each option
func testExample() { } uses 'func testExample() { }' which follows the naming convention. Others either have wrong order, capitalization, or syntax.Final Answer:
func testExample() { } -> Option CQuick Check:
Test methods start with 'test' [OK]
- Starting method name without 'test'
- Capitalizing 'Test' instead of 'test'
- Incorrect function syntax
func testSum() {
let result = 2 + 3
XCTAssertEqual(result, 5)
}Solution
Step 1: Evaluate the calculation
The code calculates 2 + 3 and stores 5 in 'result'.Step 2: Check the assertion
XCTAssertEqual compares 'result' with 5, which is true, so the assertion passes.Final Answer:
Test passes successfully -> Option AQuick Check:
2 + 3 equals 5, assertion passes [OK]
- Assuming test fails if no explicit pass message
- Confusing compile errors with assertion failures
- Thinking test is skipped without reason
func testDivide() {
let result = 10 / 0
XCTAssertEqual(result, 0)
}Solution
Step 1: Analyze the division operation
Dividing 10 by 0 causes a runtime error (crash) because division by zero is undefined.Step 2: Check other parts
XCTAssertEqual syntax is correct, method name starts with 'test', and return type is not needed for test methods.Final Answer:
Division by zero causes runtime crash -> Option DQuick Check:
Division by zero crashes app [OK]
- Thinking XCTAssertEqual syntax is wrong
- Believing test method needs return type
- Ignoring runtime errors from invalid math
func testOptionalString() {
let result = getOptionalString()
// Which assertion to use?
}Solution
Step 1: Understand the goal
We want to check that 'result' is not nil, meaning it contains a value.Step 2: Match assertion to goal
XCTAssertNotNil checks that the value is not nil, which fits perfectly. Other options either check for empty string or nil incorrectly.Final Answer:
XCTAssertNotNil(result) -> Option AQuick Check:
Use XCTAssertNotNil to check non-nil values [OK]
- Using XCTAssertEqual with empty string instead of nil check
- Confusing XCTAssertTrue with wrong condition
- Using XCTAssertFalse with incorrect logic
Ready to prove it?
Pass the test and this pattern moves unknown
