07/09/2018, 17:18

Swift - Test-Driven Development (TDD) - Chapter 1 - Part 3 - Các lưu ý với Xcode

Swift - Test-Driven Development (TDD) - Chapter 1 - Part 3 - Các lưu ý với Xcode 1. Các lưu ý cơ bản Navigate đến phần test, các bạn bấm zô cái button như trong hình: Chỉ xem test failed, không xem test pass, bấm zô cái button như trong hình: Xem kết quả, chi tiết bấm zô cái ...

Swift - Test-Driven Development (TDD) - Chapter 1 - Part 3 - Các lưu ý với Xcode

1. Các lưu ý cơ bản

  • Navigate đến phần test, các bạn bấm zô cái button như trong hình:
    alt text

  • Chỉ xem test failed, không xem test pass, bấm zô cái button như trong hình:
    alt text

  • Xem kết quả, chi tiết bấm zô cái button sau:
    alt text

  • Để xem kết quả cụ thể từng test case, bấm vào lần run đó, nhìn qua bên phải:
    alt text

  • Để run tất cả test cases: Command + U, Product -> Test, hoặc click biểu tượng màu xanh chỗ class
    alt text

  • Để run 1 specific test case: Tương tự, click vào cái ô phía trước mỗi test case hoặc ở bên trái, chỗ xem kết quả, click vào biểu tượng màu xanh/ đỏ nếu failed:
    alt text

  • Để run 1 nhóm test cases, các bạn làm theo như trong hình sau:
    Bấm vào scheme trên toolbar (biểu tượng giống cái compa ấy)
    alt text
    Bấm tiếp vào Edit Scheme... -> Chọn Test
    alt text
    Bấm và chọn các test cases mong muốn, mặc định là selected all:
    alt text

2. setUp() and tearDown() methods

Chúng ta đã thấy setUp() and tearDown() methods ở trước đó. Trong ví dụ trước, ta đã thấy được setUp() để init ViewControllerViewController. Trước mỗi test case nó sẽ được khởi tạo để dùng cho việc run. Những gì ta thay đổi ở mỗi test case riêng biệt không ảnh hưởng đến những test case khác.

tearDown() method được chạy sau mỗi lần gọi. Sử dụng tearDown() để cleanup hoặc việc gì đấy tương tự.

2. Debugging tests

Chắc cũng có lúc bạn sẽ cần debug phần code tests. Cách debug cũng như bình thường vậy. Ta chỉnh sửa code 1 chút để fail như sau:

   func test_MakeHeadline_ReturnsStringWithEachWordStartCapital2() {
     let input           = "Here is another Example"
     let expectedOutput  = "Here iS Another Example"
     let headline = viewController.makeHeadline(from: input)
     XCTAssertEqual(headline, expectedOutput)
   }

Đặt breakpoint ở dòng XCTAssertEqual. Và xem thử:
alt text

po tức là print object

3. Breakpoint làm dừng test failure

Xcode có 1 cách để breakpoint. Một khi cái breakpoint này được set, test sẽ dừng lại ở nơi nó bị failed, và 1 debug section sẽ run lên.
Thông thường đây không phải là cái mình muốn ở TDD, vì failing tests xảy ra là bình thường và mình cũng không cần biết nguyên do. Chỉ nên dùng khi đã xong refactor và chạy lại regression.

  • Bước 1: Bấm vào icon như trong hình alt text
  • Bước 2: Ở phía dưới alt text

Kết quả sau khi run lên bạn sẽ thấy, thanh kết quả tạm dừng
alt text

và phần breakpoint hiển thị ở phần sai:
alt text

Để run lại thì cũng có nhiều cách, mình giới thiệu một cách:
Product -> Perform Action -> Test "test_MakeHeadline_ReturnsStringWithEachWordStartCapital2()" Again hoặc ctrl + option + command + G

0