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

===
Updated ngày 30/06

Updated một chút: Vì những bất tiện và không rõ ràng về thông tin của kipalog, mình mới dọn về nhà mới ở đây, thoải mái, đẹp đẽ rõ ràng hơn kipalog. Mong các bạn có thể theo dõi tại trang web của mình để cập nhật thêm nha

Mình mới viết một loạt bài về chủ đề Clean Architecture và Service Locator. Các bạn có thể theo dõi.

Page trên facebook ở đây: ở đây

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

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

Bùi Khánh Duy

29 bài viết.
13 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
Male avatar
4 3
RxSwift: Bài 1 Observable và Just, Of, From ===== Updated ngày 30/06 Updated một chút: Vì những bất tiện và không rõ ràng về thông tin của kipalo...
Bùi Khánh Duy viết 8 tháng trước
4 3
Male avatar
4 0
Autolayout và lifecycle trong IOS ===== Updated ngày 30/06 Updated một chút: Vì những bất tiện và không rõ ràng về thông tin của kipalog, mình mớ...
Bùi Khánh Duy viết 6 tháng trước
4 0
Male avatar
2 3
RxSwift: Bài 2 Subscribing to observables ===== Updated ngày 30/06 Updated một chút: Vì những bất tiện và không rõ ràng về thông tin của kipalog,...
Bùi Khánh Duy viết 8 tháng trước
2 3
Bài viết liên quan
White
2 3
Xin chào mọi người. Mình xin chia sẽ một UILabel Helper nhỏ dùng trong truờng hợp cần tính chiều cao của UILabel để xác định "Show More" button có ...
DonDinh viết hơn 3 năm trước
2 3
White
11 4
(Link) (Link) (Link) Ở 2 phần tut trước, mình đã hướng dẫn khá chi tiết cách viết một ứng dụng camera có tích hợp chức năng nhận diện khuôn mặ...
HoangPH viết hơn 3 năm trước
11 4
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
29 bài viết.
13 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!