Следующее было сделано с помощью 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
.