2015-10-02 16 views
6

Với Android 6.0 và mô hình quyền mới, tôi đang kiểm tra xem sự cho phép có tồn tại hay không trước khi thực hiện một số tác vụ nhất định.Làm cách nào để thử quyền truy cập để thử nghiệm trong Android?

Tôi muốn chỉ định các quyền này khả dụng và không khả dụng cho mục đích thử nghiệm. Tôi có một lớp tĩnh để kiểm tra các quyền khác nhau tùy thuộc vào chuỗi.

boolean result = ContextCompat.checkSelfPermission(context, name) == PackageManager.PERMISSION_GRANTED; 

Có thể đạt được bằng cách sử dụng Mockito hoặc Roboelectric không?

+2

Robolectric chỉ tương thích với API 21. Họ đang làm việc với API 23 ngay bây giờ –

Trả lời

3

Nếu bạn di chuyển trình kiểm tra quyền của mình sang lớp cộng tác viên, bạn có thể giả lập cộng tác viên. Tôi không quen thuộc với các loại trả về Android nhưng giải pháp sẽ trông giống như sau:

class PermissionsChecker { 
    public String checkSelfPermission(context, name) { 
     return ContextCompat.checkSelfPermission(context, name); 
    } 
} 
class YourApp { 
    private PermissionsChecker permissionsChecker; //need to inject this via setter or constructor 
    public doSomething() { 
     boolean result = permissionsChecker.checkSelfPermission(context, name).equals(PackageManager.PERMISSION_GRANTED); 
    } 
} 
class YourAppTest { 
    PermissionsChecker permissionsChecker = mock(PermissionsChecker.class); 
    @InjectMocks YourApp app = new YourApp(); 
    @Test 
    public void hasPermissions() { 
     when(permissionsChecker.checkSelfPermission(...)).thenReturn("NOT GRANTED"); 
     app.something(); 
     //verify you get some error 
    } 
} 
Các vấn đề liên quan