Swift
Beginner
1 min read
Testing and Assertions
Example
import XCTest
// Class under test
struct Calculator {
enum CalcError: Error { case divisionByZero }
func divide(_ a: Double, by b: Double) throws -> Double {
guard b != 0 else { throw CalcError.divisionByZero }
return a / b
}
func add(_ a: Double, _ b: Double) -> Double { a + b }
}
// XCTest
class CalculatorTests: XCTestCase {
var sut: Calculator!
override func setUp() {
super.setUp()
sut = Calculator()
}
override func tearDown() {
sut = nil
super.tearDown()
}
func testAddition() {
XCTAssertEqual(sut.add(2, 3), 5)
XCTAssertEqual(sut.add(-1, 1), 0)
}
func testDivision() throws {
let result = try sut.divide(10, by: 2)
XCTAssertEqual(result, 5, accuracy: 0.001)
}
func testDivisionByZeroThrows() {
XCTAssertThrowsError(try sut.divide(5, by: 0)) { error in
XCTAssertTrue(error is Calculator.CalcError)
}
}
func testPerformance() {
measure {
for _ in 0..<1000 { _ = sut.add(1.5, 2.5) }
}
}
}