Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Sự khác biệt giữa thời gian (n) và ít nhất (n) trong phương pháp xác minh của mockito là gì


Sự khác biệt giữa thời gian (n) và ít nhất (n) trong phương pháp xác minh của mockito là gì


Trong mockito, `Times (n)` và `Ít nhất (n)` được sử dụng trong phương thức `xác minh 'để kiểm tra xem một phương thức được gọi trên một đối tượng giả. Đây là một lời giải thích chi tiết về mỗi:

Times (n)

- Mục đích: Phương thức này xác minh rằng một phương thức được gọi là chính xác `n` lần. Nếu phương thức được gọi là nhiều hơn hoặc ít hơn `n` lần, bài kiểm tra sẽ thất bại.
- Ví dụ: `Xác minh (Mock, Times (2)).
- Sử dụng trường hợp: Sử dụng khi bạn cần đảm bảo một số lượng chính xác các yêu cầu.

Ít nhất (n)

- Mục đích: Phương pháp này xác minh rằng một phương thức được gọi là ít nhất là `n` lần. Nếu phương thức được gọi là ít hơn `n` lần, thử nghiệm sẽ thất bại, nhưng nó sẽ vượt qua nếu nó được gọi là nhiều hơn` n` lần.
- Ví dụ: `Xác minh (giả, ít nhất (2)). Somemethod ();` đảm bảo rằng `somemethod ()` được gọi là ít nhất hai lần.
- Sử dụng trường hợp: Sử dụng khi bạn muốn đảm bảo số lượng yêu cầu tối thiểu nhưng không quan tâm đến mức tối đa.

Sự khác biệt chính

- Chính xác so với Tối thiểu: `Times (N)` Yêu cầu số lượng cuộc gọi chính xác, trong khi `Ít nhất (n)` yêu cầu ít nhất số lượng cuộc gọi đó.
- Tính linh hoạt: `Ít nhất (n)` linh hoạt hơn vì nó cho phép nhiều cuộc gọi hơn được chỉ định, trong khi `Times (n)` là nghiêm ngặt về số lượng cuộc gọi.
- Xử lý lỗi: Nếu một phương thức được gọi là nhiều lần hơn được chỉ định với `Times (n)`, Mockito sẽ ném một ngoại lệ (`ToomanyactualInvocations`). Với `Ít nhất (n)`, nó sẽ chỉ thất bại nếu phương thức được gọi là ít thời gian hơn được chỉ định (`ToolittleactualInvocations`).

Tóm lại, `Times (n)` được sử dụng để kiểm soát chính xác số lượng các cuộc gọi phương thức, trong khi `Ít nhất (n)` được sử dụng để đảm bảo ngưỡng các cuộc gọi tối thiểu mà không hạn chế số lượng cuộc gọi tối đa.

Trích dẫn:
[1] https://stackoverflow.com/questions/58176580/what-is-the-difference-between-atleastonce-and-times1-in-mockito
[2] https://mincong.io/2019/09/22/mockito-verify/
[3] https://github.com/mockk/mockk
[4] https://site.mockito.org/javadoc/current/org/mockito/mockito.html
[5] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.Mockito.atLeast
[6] https://stackoverflow.com/questions/60969650/use-of-verify-method-with-and-without-times1-parameter
[7] https://www.digitalocean.com/community/tutorials/mockito-verify
[8] https://stackoverflow.com/questions/27787487/java-verify-void-method-calls-n-times-with-mockito
[9] https://www.javacodegeeks.com/2015/11/mockito-verification.html
[10] https://stackoverflow.com/questions/54233024/how-to-verify-a-method-which-was-called-multiple-times/54233921