sat*_*sat 6 testing android mockito robolectric
使用Android 6.0和新的权限模型,我在执行某项任务之前检查权限是否存在.
我想将这些权限分配给可用且不可用于测试目的.我有一个静态类来检查各种权限取决于字符串.
boolean result = ContextCompat.checkSelfPermission(context, name) == PackageManager.PERMISSION_GRANTED;
Run Code Online (Sandbox Code Playgroud)
可以使用Mockito或Roboelectric实现吗?
小智 5
如果您将权限检查器移至协作者类,则可以模拟协作者。我不熟悉 Android 返回类型,但解决方案如下所示:
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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2324 次 |
| 最近记录: |