XCTestはiOSアプリケーションをテストするためのフレームワークで、アプリが意図した通りに動作するかどうかを確認するために使われます。この記事では、XCTestの基本的なアサーション(Assertion)を学び、テストの基本的な構造や役割を紹介します。
まだ理解が浅いので間違ったことを言ったりコードがおかしかったりするかもですが許してください。
Contents 非表示
XCTestとは?
XCTestは、XcodeでユニットテストやUIテストを行うためのフレームワークです。テストを実行することで、コードが期待通りに動作しているか、バグや問題がないかを確認できます。アサーション(Assertion)は、特定の条件が満たされているかどうかを確認するためのメソッドで、これによりテストの成否が判断されます。
XCTestの基本的な構成
XCTestのテストケースは、XCTestCase
クラスを継承したクラスの中に記述します。各テストはfunc testSomething()
のようにtest
というプレフィックスがついたメソッドで行います。
import XCTest
struct Dog: Equatable {
var name: String
var age: Int
}
class BasicAssertionTest: XCTestCase {
private let string = "Hello"
private let notNumber = Int("Hello")
private let number = Int("334")
private let dog1 = Dog(name: "一郎", age: 51)
private let dog2 = Dog(name: "翔平", age: 30)
override func setUp() {
super.setUp()
}
override func tearDown() {
super.tearDown()
}
// Boolを判定する
func testHasPrefix() {
XCTAssertTrue(string.hasPrefix("He"), "stringがHeから始まることを確認します。")
XCTAssertFalse(string.isEmpty, "stringが空でないことを確認します。")
}
// nilを判定する
func testNumberValidation() {
XCTAssertNil(notNumber, "notNumberがnilであることを確認します。")
XCTAssertNotNil(number, "numberがnilでないことを確認します。")
}
// 等値性を判定する
func testEqual() {
XCTAssertEqual(string, "Hello", "stringがHelloであることを確認します。")
XCTAssertNotEqual(string, "Goodbye", "stringがGoodbyeでないことを確認します。")
}
// Equatableプロトコルの比較を行う
func testEquatable() {
XCTAssertNotEqual(dog1, dog2, "それぞれ違うDogオブジェクトであることを確認します。")
}
// 数値の比較を行う
func testCompareNumber() {
XCTAssertGreaterThan(20, 10, "20が10より大きいことを確認します。")
XCTAssertGreaterThanOrEqual(334, 334, "334が334以上であることを確認します。")
XCTAssertLessThan(10, 20, "10が20より小さいことを確認します。")
}
}
各種Assertionの解説
以下に、上記コードで使用した主なアサーションを説明します。
XCTAssertTrue
と XCTAssertFalse
XCTAssertTrue
:条件がtrue
かどうかを確認します。例えば、文字列が特定のプレフィックスを持っているかなどを確認できます。XCTAssertFalse
:条件がfalse
であるかを確認します。
例:
XCTAssertTrue(string.hasPrefix("He"), "stringがHeで始まることを確認します。")
XCTAssertFalse(string.isEmpty, "stringが空でないことを確認します。")
XCTAssertNil
と XCTAssertNotNil
XCTAssertNil
:オブジェクトがnil
であるかを確認します。XCTAssertNotNil
:オブジェクトがnil
でないことを確認します。
例:
XCTAssertNil(notNumber, "notNumberがnilであることを確認します。")
XCTAssertNotNil(number, "numberがnilでないことを確認します。")
XCTAssertEqual
と XCTAssertNotEqual
XCTAssertEqual
:2つの値が等しいかどうかを確認します。XCTAssertNotEqual
:2つの値が等しくないことを確認します。
例 :
XCTAssertEqual(string, "Hello", "stringがHelloであることを確認します。")
XCTAssertNotEqual(string, "Goodbye", "stringがGoodbyeでないことを確認します。")
XCTAssertGreaterThan
と XCTAssertLessThan
XCTAssertGreaterThan
:左側の値が右側の値より大きいことを確認します。XCTAssertLessThan
:左側の値が右側の値より小さいことを確認します。
例 :
XCTAssertGreaterThan(20, 10, "20が10より大きいことを確認します。")
XCTAssertLessThan(10, 20, "10が20より小さいことを確認します。")
まとめ
XCTestを使用したユニットテストは、アプリの安定性を向上させ、バグを早期に発見するために非常に有効です。今回紹介したアサーションを活用することで、簡単にテストを記述することができます。