Bird
Raised Fist0
Swiftprogramming~20 mins

XCTest framework basics in Swift - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
XCTest Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this XCTest assertion?
Consider the following XCTest code snippet. What will be the result when this test runs?
Swift
func testSum() {
    let result = 2 + 3
    XCTAssertEqual(result, 5)
    print("Test passed")
}
ACompilation error due to missing import XCTest
BTest failed with XCTAssertEqual failure
CRuntime error: undefined variable 'result'
DTest passed
Attempts:
2 left
💡 Hint
XCTAssertEqual checks if two values are equal. If they are, the test continues.
🧠 Conceptual
intermediate
1:30remaining
What is the purpose of the setUp() method in XCTest?
In XCTest, what does the setUp() method do?
AIt runs once before all tests in the class to set up shared resources.
BIt runs after each test method to clean up resources.
CIt runs before each test method to prepare the test environment.
DIt runs once after all tests in the class to tear down shared resources.
Attempts:
2 left
💡 Hint
Think about preparing fresh conditions for every test.
🔧 Debug
advanced
2:00remaining
Why does this XCTest fail to compile?
Identify the reason this XCTest code does not compile.
Swift
class MyTests: XCTestCase {
    func testExample() {
        XCTAssertTrue(5 > 3)
    }

    func setUp() {
        print("Setup called")
    }
}
AXCTAssertTrue requires a message parameter.
BsetUp() must be marked with override keyword.
CtestExample() must return a Bool value.
DXCTestCase class cannot have more than one method.
Attempts:
2 left
💡 Hint
Check method overriding rules in Swift classes.
📝 Syntax
advanced
1:30remaining
Which option correctly defines a test method in XCTest?
Choose the correct syntax for a test method in an XCTestCase subclass.
Afunc testAddition() { XCTAssertEqual(1+1, 2) }
Bfunc testAddition() throws { XCTAssertEqual(1+1, 2) }
Cfunc testAddition() -> Bool { XCTAssertEqual(1+1, 2); return true }
Dfunc testAddition() async { XCTAssertEqual(1+1, 2) }
Attempts:
2 left
💡 Hint
Test methods should not return values or be async/throws by default.
🚀 Application
expert
2:30remaining
How many tests will run and what is the output?
Given this XCTestCase subclass, how many tests will run and what will be printed?
Swift
class SampleTests: XCTestCase {
    override func setUp() {
        super.setUp()
        print("Setup")
    }

    func testOne() {
        print("Test One")
        XCTAssertTrue(true)
    }

    func testTwo() {
        print("Test Two")
        XCTAssertTrue(false)
    }

    func helper() {
        print("Helper")
    }
}
A2 tests run; output: Setup, Test One, Setup, Test Two; testTwo fails
B3 tests run; output: Setup, Test One, Setup, Test Two, Setup, Helper; testTwo fails
C2 tests run; output: Setup, Test One, Setup, Test Two; all tests pass
D1 test runs; output: Setup, Test One; testOne passes
Attempts:
2 left
💡 Hint
Only methods starting with 'test' run as tests. setUp runs before each test.

Practice

(1/5)
1. What is the main purpose of the XCTest framework in Swift?
easy
A. To manage app navigation and routing
B. To create user interfaces for iOS apps
C. To write tests that check if your Swift code works correctly
D. To handle network requests and responses

Solution

  1. Step 1: Understand XCTest framework role

    XCTest is designed to help developers write tests for their Swift code to ensure it behaves as expected.
  2. Step 2: Compare options with XCTest purpose

    Only To write tests that check if your Swift code works correctly describes writing tests to check code correctness, which matches XCTest's main use.
  3. Final Answer:

    To write tests that check if your Swift code works correctly -> Option C
  4. Quick Check:

    XCTest purpose = write tests [OK]
Hint: XCTest is for testing code correctness only [OK]
Common Mistakes:
  • Confusing XCTest with UI design tools
  • Thinking XCTest manages app navigation
  • Assuming XCTest handles networking
2. Which of the following is the correct way to declare a test method inside an XCTestCase subclass?
easy
A. func testExample() { }
B. func exampleTest() { }
C. func TestExample() { }
D. func example() { }

Solution

  1. Step 1: Recall XCTest method naming rules

    Test methods must start with the word 'test' and use camelCase, starting with lowercase.
  2. Step 2: Check each option's method name

    func testExample() { } starts with 'test' and uses correct casing. Others either start with the wrong word or uppercase first letter.
  3. Final Answer:

    func testExample() { } -> Option A
  4. Quick Check:

    Test method name starts with 'test' [OK]
Hint: Test methods always start with 'test' lowercase [OK]
Common Mistakes:
  • Starting method name with uppercase 'Test'
  • Placing 'test' at the end of method name
  • Not starting method name with 'test'
3. What will be the output when running this test method?
class MyTests: XCTestCase {
    func testSum() {
        let result = 2 + 3
        XCTAssertEqual(result, 5)
    }
}
medium
A. Test fails with an assertion error
B. Test passes with no errors
C. Compilation error due to missing return
D. Runtime error due to wrong XCTAssert usage

Solution

  1. Step 1: Analyze the test method logic

    The method calculates 2 + 3 and stores in result, which equals 5.
  2. Step 2: Check the assertion

    XCTAssertEqual compares result (5) with expected value 5, which matches, so assertion passes.
  3. Final Answer:

    Test passes with no errors -> Option B
  4. Quick Check:

    2 + 3 = 5, XCTAssertEqual passes [OK]
Hint: XCTAssertEqual passes if values are equal [OK]
Common Mistakes:
  • Thinking test fails when values match
  • Confusing compilation errors with test failures
  • Assuming XCTAssertEqual causes runtime errors
4. Identify the error in this test code:
class SampleTests: XCTestCase {
    func testMultiply() {
        let product = 4 * 5
        XCTAssertEqual(product, 20
    }
}
medium
A. Missing closing parenthesis in XCTAssertEqual
B. Test method name does not start with 'test'
C. Incorrect multiplication operator used
D. XCTestCase subclass missing override keyword

Solution

  1. Step 1: Check syntax of XCTAssertEqual call

    The XCTAssertEqual call is missing a closing parenthesis at the end.
  2. Step 2: Verify other parts

    Method name starts with 'test', multiplication operator is correct, and override keyword is not required here.
  3. Final Answer:

    Missing closing parenthesis in XCTAssertEqual -> Option A
  4. Quick Check:

    Syntax error due to missing ')' [OK]
Hint: Count parentheses carefully in assertions [OK]
Common Mistakes:
  • Ignoring missing parentheses causing syntax errors
  • Thinking override is needed for test methods
  • Confusing operators in simple math
5. You want to test a function that returns the maximum number from an array. Which XCTest assertion is best to verify the result?
hard
A. XCTAssertNil to check if the max value is nil
B. XCTAssertThrowsError to check if max throws an error
C. XCTAssertTrue to check if max value is greater than zero
D. XCTAssertEqual to compare expected and actual max values

Solution

  1. Step 1: Understand the function's expected output

    The function returns the maximum number from an array, which is a specific value.
  2. Step 2: Choose assertion to compare values

    XCTAssertEqual compares two values for equality, perfect to check if returned max matches expected max.
  3. Step 3: Evaluate other options

    XCTAssertNil checks for nil, not suitable here. XCTAssertTrue checks a condition but not exact value. XCTAssertThrowsError checks for errors, irrelevant here.
  4. Final Answer:

    XCTAssertEqual to compare expected and actual max values -> Option D
  5. Quick Check:

    Compare expected and actual values with XCTAssertEqual [OK]
Hint: Use XCTAssertEqual to check exact values [OK]
Common Mistakes:
  • Using XCTAssertNil when value is never nil
  • Using XCTAssertTrue without exact value check
  • Expecting errors when function doesn't throw
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard