Как 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
Ответить

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

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

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

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

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