Неудобство при тестировании: Android Studio JUnit и Gradle: testOptions, проигнорированный Android Studio - PullRequest
0 голосов
/ 06 мая 2019

Следующее было сделано с помощью Android Studio 3.4, Android Gradle Plugin 3.3.2 и Gradle 4.10.3.

В файле build.gradle я настроил некоторые параметры модульного тестирования, такие как:

android {
  testOptions {
    unitTests.all {
      systemProperty "debug","true"
    }
  }
}

У меня есть тестовая функция, которая пытается прочитать это свойство:

package com.demo;
public class SysPropTestDemo {
    @Test
    public static void dumpSysProps() {
        System.out.println("sysprop(debug)=" + System.getProperty("debug"));
    }
}

При запуске через командную строку gradlew test --test com.demo.SysPropTestDemo я получу свойство debug, правильно установленное на true,Если я запускаю тот же тест через Android Studio без установки каких-либо параметров , показанное значение будет null.

Чтобы получить тот же результат в Android Studio, мне явно придетсявведите некоторые значения на панели «Run / Debug Configurations», например что-то вроде -Ddebug=true в настройках виртуальной машины.

Теперь это тривиальный пример, но я действительно хочу добавить некоторый путьв свойство java.library.path, чтобы можно было загружать библиотеку JNI, скомпилированную в проекте.(Мне нужно написать несколько тестов, в которых используется модифицированная библиотека SQLite, поэтому не использовать JNI здесь не вариант)

Это работает при установке дополнительных параметров, но я думаю, что это очень неудобно, так как яне могу ввести значение переменной в опциях конфигурации (или, по крайней мере, я не знаю, как).Подводя итог: при настройке или изменении значений мне нужно пройти через несколько экранов конфигурации, где я действительно предпочел бы иметь одно место в файле конфигурации.

Разве Android Studio не должна каким-то образом использоватьзначений, указанных в файле build.gradle?В противном случае, документы не дают понять, что настройки testOptions.unitTests.all могут использоваться только через вызов gradlew.

1 Ответ

0 голосов
/ 07 мая 2019
Skybow,

I feel you have two questions
1. How to load jni lib for androidTest(not for 'test[non instrumented unit tests])
   - copy your jni library in corresponding folder [JNI libraries: [app/src/androidTestFLAVORNAMEDebug/jniLibs]
   - load your jni library
     static {

                try {
                    System.loadLibrary("xyzjni");
                } catch (Exception e) {
                    Logger.error("Exception on loading the jni library : " + e.getMessage());
                }

        }

2. How to make android studio use your config variables defined for unitTests.
   - It would have great if some text file is there which has all configs.
   - Or it is part of build.gradle
   - I don't have any detail on this.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...