Как протестировать класс PermissionHelper, внедренный Hilt, с помощью активности в инструментальных тестах?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как протестировать класс PermissionHelper, внедренный Hilt, с помощью активности в инструментальных тестах?

Сообщение Anonymous »

Я пытаюсь протестировать класс PermissionHelper, который внедряется с помощью Hilt в мое приложение для Android. Класс PermissionHelper определяется следующим образом:

Код: Выделить всё

public class PermissionHelper {

private final AppCompatActivity mActivity;

@Inject
public PermissionHelper(AppCompatActivity activity) {
this.mActivity = activity;
}
@RequiresApi(api = Build.VERSION_CODES.R)
public boolean checkStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
return Environment.isExternalStorageManager();
} else {
int result = ContextCompat.checkSelfPermission(mActivity, READ_EXTERNAL_STORAGE);
int result1 = ContextCompat.checkSelfPermission(mActivity, WRITE_EXTERNAL_STORAGE);
return result == PackageManager.PERMISSION_GRANTED
&& result1 == PackageManager.PERMISSION_GRANTED;
}
}

public void checkPermissions() {
String[] permissions = permissions();
int result;
List listPermissionsNeeded = new ArrayList();
for (String p : permissions) {
result = ContextCompat.checkSelfPermission(mActivity, p);
if (result != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(p);
}
}
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(
mActivity,
listPermissionsNeeded.toArray(new String[0]),
100);
}
}
}
Я хочу протестировать метод checkPermissions() PermissionHelper. Вот некоторые моменты, с которыми я столкнулся:
Настройка Hilt-тестирования. При использовании модульных тестов Android Studio не требует принудительного использования Hilt-тестирования. Однако для инструментальных тестов важно использовать Hilt-тестирование.
Проблемы тестирования:
  • Как я могу отделить приложение для тестирования Hilt от основного графа
    приложения Hilt?
  • Следует ли мне создать отдельное тестовое приложение в папке отладки и
    изменить его? файл манифеста для Hilt, обеспечивающий действие? Я
    сталкиваюсь с ошибкой, связанной с предоставлением действия.
  • Как я могу использовать ActivityScenario с Espresso для тестирования и убедиться, что
    Hilt распознает это как действие, которое я начинаю ?
Обнаружена ошибка: При использовании реального PermissionHelper в основном приложении я получаю следующую ошибку:

Код: Выделить всё

error: [Dagger/IncompatiblyScopedBindings] dagger.hilt.android.internal.testing.root.Default_HiltComponents.SingletonC scoped with @Singleton may not reference bindings with different scopes:
Specifically, PermissionHelper is annotated with @ActivityScoped, but it seems to be incompatible with @Singleton components.
Дополнительные сведения:
Мой класс PermissionHelper имеет область действия @ActivityScoped, а область действия компонентов Hilt — @Singleton. .
Мне нужно руководство по настройке правильной среды тестирования Hilt для правильной обработки этих областей и обеспечения правильного предоставления зависимостей, таких как AppCompatActivity, для инструментальных тестов.
Любая помощь или примеры того, как Мы будем очень признательны за решение этих проблем!
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/787 ... rumented-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»