07/09/2018, 17:28

Swift - Test-Driven Development (TDD) - Chapter 1 - Part 1b - Unit Test

Swift - Test-Driven Development (TDD) - Chapter 1 - Part 1b - Unit Test Trong phần 1b này, mình sẽ đi qua các XCTAssert 1 chút. Trước hết, ta ôn lại phần 1a một chút. Để check result thì ta sử dụng XCTAssertEqual(_, _) để check đúng không ạ? Vậy thì XCTAssert còn gì hay nữa không? 3. Những ...

Swift - Test-Driven Development (TDD) - Chapter 1 - Part 1b - Unit Test

Trong phần 1b này, mình sẽ đi qua các XCTAssert 1 chút. Trước hết, ta ôn lại phần 1a một chút. Để check result thì ta sử dụng XCTAssertEqual(_, _) để check đúng không ạ? Vậy thì XCTAssert còn gì hay nữa không?

3. Những built-in assert quan trọng:

a. Các XCTAssert

  • XCTAssertTrue(::file:line:): Assert trả về true
  • XCTAssertFalse(::file:line:): Assert trả về true
  • XCTAssertEqual(::_:file:line:): Assert so sánh bằng
  • XCTAssertEqualWithAccuracy(::accuracy:_:file:line:): Assert so sánh 2 biểu thức như nhau hay không, có tính đến độ chính xác được defined trong parameter
  • XCTAssertNotEqual(::_:file:line:): So sánh hai vế không bằng
  • XCTAssertNil(::file:line:): Assert trả về nil
  • XCTAssertNotNil(::file:line:): Assert trả về không phải là nil
  • XCTFail(_:file:line:): Assert luôn fail

b. Lưu ý khi sử dụng:

Lưu ý rằng khi sử dụng các Assert thì ta có rất nhiều sự lựa chọn nhưng bạn nên sử dụng các assertions càng rõ ràng càng tốt. Lý dó là log khi bạn fail sẽ nó cho bạn chính xác cái gì đã xảy ra. Để mình ví dụ nha:

XCTAssertEqual(2, 1, "DuyBui")
   // Output:
   // XCTAssertEqual failed: ("2") is not equal to ("1") - foo
XCTAssertTrue(2 == 1, "DuyBui")
   // Output:
   // XCTAssertTrue failed - bar

Trong 2 trường hợp, trường hợp 1 là ta nhìn vào biết tại sao nó fail luôn, còn trường hợp 2 thì không. Lưu ý, tham số thứ 3 của 2 trường hợp đều là Optional.
Nếu code của bạn đã quá clear rồi, bạn không cần phải thêm phần message này.

c. Log và debug:

Trong trường hợp fail ở part 1, ta xem phần log của nó như sau:
alt text

Output đã chỉ ra file và line mà test case bị failed. Đó là; /Users/duybui/Desktop/AccessControl/TestDriver(TDD)/TestDriver(TDD)Tests/TestDriver_TDD_Tests.swift và 18. Ta có thể điều chỉnh để cho log dễ nhìn hơn như sau:

XCTAssertEqual(numberOfVowels, 3,
"should find 3 vowels in BuiKhanhDuy", 
file: "TestDriver_TDD_Tests.swift", 
line: 18)

Khi đó log cho ra sẽ dễ chịu hơn:
alt text

OK, như vậy ta đã xong phần Unit Test, chuẩn bị qua phần tiếp theo, là trọng tâm của loạt bài này: TDD

0