Android – тестирование строкового ресурса с помощью RobolectricAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android – тестирование строкового ресурса с помощью Robolectric

Сообщение Anonymous »

Я просто хочу проверить, что получение ресурса String соответствует тому, что, по моему мнению, должно быть равным. Кажется, моя проблема в том, что в моем проекте есть Realm. Я знаю, что Robolectric не поддерживает Realm (об этом говорится в документации), но я вообще не использую Realm, поэтому чувствую, что есть способ сделать это.

import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;

import static org.junit.Assert.assertEquals;

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21, manifest = "app/src/main/AndroidManifest.xml")
public class ResourceTester {

@Test
public void testingString() {
String resourceString = RuntimeEnvironment.application.getString(R.string.app_name);
assertEquals(resourceString, "Yeah");
}

}


Похоже, что он ПЫТАЕТСЯ вызвать Realm

java.lang.UnsatisfiedLinkError: Can't load library:
/var/folders/3x/ddxtg5fs1hxgqrp6h63vsc140000gp/T/android-tmp-
robolectric3612430387389787158/app_lib/librealm-jni.dylib.3.5.0


РЕДАКТИРОВАНИЕ: Я попробовал еще кое-что, и кажется, что установка манифестав аннотации @Config является проблемой, но затем я получаю исключение android.content.res.Resources$NotFoundException: неизвестный ресурс 2131362072

Есть еще мысли? Могу ли я создать другой класс приложения, в котором не вызывается Realm? Откуда каталог /test узнает об этом?

РЕДАКТИРОВАТЬ ДЛЯ ДЭВИДА:

Я попробовал это:

@RunWith(RobolectricGradleTestRunner.class)
@Config(application = TestingApplication.class, constants = BuildConfig.class, sdk = 21)
public class ResourceTester {
@Test
public void newTestingTests() throws Exception {
String appName = RuntimeEnvironment.application.getString(R.string.app_name);
}
}


но я получаю:

android.content.res.Resources$NotFoundException: unknown resource 2131362072

Если я изменю его на

@RunWith(RobolectricTestRunner.class)
//@RunWith(RobolectricGradleTestRunner.class)
@Config(application = TestingApplication.class, constants = BuildConfig.class, sdk = 21)
public class ResourceTester {
@Test
public void newTestingTests() throws Exception {
String appName = RuntimeEnvironment.application.getString(R.string.app_name);
}
}


Я понимаю

WARNING: No manifest file found at ./AndroidManifest.xml.Falling back to the Android OS resources only.
To remove this warning, annotate your test class with @Config(manifest=Config.NONE).

android.content.res.Resources$NotFoundException: unknown resource 2131362072


Подробнее здесь: https://stackoverflow.com/questions/452 ... obolectric
Ответить

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

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

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

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

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