2016-08-02 21 views
6

Tôi cố gắng để viết một bài kiểm tra Junit mà sẽ xác minh xem các phương pháp sau đây được gọi là:Sử dụng Mockito Matchers.any() với android.support.annotation.IntDef chú thích tùy chỉnh

public long executeRequest(@RequestCodes.Code.RequestAnnotation int requestCode, Object requestInformation, RequestListener requestListener) { 

    boolean success = false; 

    ... do stuff ... 

    return success ? 1L : -1L; 

} 

trong một thử nghiệm sử dụng:

Mockito.when(mockedRequest.executeRequest(Matchers.any(RequestCodes.Code.RequestAnnotation.class), Matchers.any(RequestWrapper.class), Matchers.any(RequestListener.class))).thenReturn(1L); 

Lớp RequestCodes.Code.RequestAnnotation là giao diện indef chính dùng int để nhận dạng cuộc gọi thực hiện bằng công tắc. Khá giống như this.

Matchers.any(RequestCodes.Code.RequestAnnotation.class) sẽ không hoạt động tại đây và tôi đã thử Matchers.any(), Matchers.anyInt(), Matchers.isA(RequestCodes.Code.RequestAnnotation.getClass()) (cũng như bất kỳ điều gì khác mà bạn nghĩ) không thành công.

Mọi đề xuất sẽ được đánh giá cao.

+2

'anyInt()' chắc chắn sẽ hoạt động, chỉ Lint sẽ khiếu nại. Bạn cũng có thể giới thiệu một trình phù hợp tùy chỉnh cho trường hợp sử dụng này. – Egor

+0

Đã qua rất giống công việc hôm nay. [Vấn đề 222711] (https://code.google.com/p/android/issues/detail?id=222711) có đáng để mắt đến không? – piratemurray

Trả lời

2

Hiện tại, bạn có thể chặn lỗi này bằng cách sử dụng @SuppressWarnings("WrongConstant") cho thử nghiệm cụ thể này. Nó hoạt động tốt, và giữ cho sản xuất của bạn sạch sẽ.

Các vấn đề liên quan