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