Mục lục:

Bạn có thể kiểm tra đơn vị các phương pháp tĩnh không?
Bạn có thể kiểm tra đơn vị các phương pháp tĩnh không?

Video: Bạn có thể kiểm tra đơn vị các phương pháp tĩnh không?

Video: Bạn có thể kiểm tra đơn vị các phương pháp tĩnh không?
Video: Năng Lực Tiềm Ẩn Của Bạn Là Gì? Bài Trắc Nghiệm Đơn Giản 2024, Tháng mười một
Anonim

Đến đơn vị kiểm tra bạn cần phải lấy một phần nhỏ của của bạn mã, viết lại các phụ thuộc của nó và kiểm tra nó trong sự cô lập. Điều này thật khó với phương pháp tĩnh , không chỉ trong trường hợp họ truy cập trạng thái toàn cầu mà thậm chí nếu như họ chỉ gọi cho người khác phương pháp tĩnh.

Xem xét điều này, làm thế nào để bạn kiểm tra các phương thức tĩnh?

Có bốn bước đơn giản để thiết lập thử nghiệm mô phỏng cuộc gọi tĩnh:

  1. Sử dụng trình chạy PowerMock JUnit: @RunWith (PowerMockRunner.
  2. Khai báo lớp thử nghiệm mà chúng ta đang chế nhạo:
  3. Cho PowerMock biết tên của lớp có chứa các phương thức tĩnh:
  4. Thiết lập các kỳ vọng, yêu cầu PowerMock mong đợi một cuộc gọi đến một phương thức tĩnh:

Tương tự, chúng ta có thể giả lập các phương thức tĩnh C # không? 4 Câu trả lời. Moq (và dựa trên DynamicProxy khác chế giễu khuôn khổ) không thể chế nhạo bất cứ thứ gì không phải là ảo hoặc trừu tượng phương pháp . Ngoài ra, bạn có thể cấu trúc lại thiết kế của bạn cho các cuộc gọi trừu tượng tới phương pháp tĩnh và cung cấp sự trừu tượng này cho lớp của bạn thông qua việc tiêm phụ thuộc.

Về vấn đề này, làm thế nào để bạn kiểm tra các phương pháp riêng tư?

Bài kiểm tra đơn vị chỉ API có sẵn công khai. Khi viết bài kiểm tra đơn vị , bắt chước hành vi của các khách hàng của SUT. Đừng thử nghiệm các phương pháp riêng tư . Một trong hai kiểm tra đơn vị chúng gián tiếp, sử dụng API công khai hoặc trích xuất chúng thành các lớp riêng biệt và kiểm tra thay vào đó là các lớp đó.

Phương thức tĩnh là gì?

Trong Java, một phương pháp tĩnh là một phương pháp thuộc về một lớp chứ không phải là một thể hiện của một lớp. Các phương pháp có thể truy cập vào mọi phiên bản của một lớp, nhưng phương pháp được định nghĩa trong một thể hiện chỉ có thể được truy cập bởi thành viên của một lớp.

Đề xuất: