Как JUnit протестировать метод, использующий конструктор JSONObjectAndroid

Форум для тех, кто программирует под Android
Anonymous
Как JUnit протестировать метод, использующий конструктор JSONObject

Сообщение Anonymous »

У меня есть метод, который вызывает API, а затем, после проверки того, что тело ответа является действительным JSON, создает новый JSONObject следующим образом:

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

responseData[0] = new JSONObject(response.toString());
Класс JSONObject является частью Android SDK. Это означает, что по умолчанию он недоступен для модульного тестирования.
Я пробовал следующие решения:
Решение для извлечения JSON из Maven Central следующим образом:

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

dependencies {
...
testImplementation 'org.json:json:20210307'
}
Ошибка та же, что и без:

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

java.lang.RuntimeException: Stub!

at org.json.JSONObject.(JSONObject.java:115)
Решение использовать роботоэлектрик

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

testImplementation "org.robolectric:robolectric:4.13"
в gradle.build и далее в тесте

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

@RunWith(RobolectricTestRunner.class)
public class TestApiConnectionHandler {
Ошибка (появляется только при использовании robolectric):

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

java.lang.NoClassDefFoundError: org.conscrypt.OpenSSLProvider
Ни то, ни другое не сработало. Я не нашел способа имитировать класс JSONObject с помощью Mockito, чтобы использовать конструктор с помощью тестируемого метода.
Какие еще решения я пропустил?

Подробнее здесь: https://stackoverflow.com/questions/791 ... onstructor

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