以下操作是使用Android Studio 3.4,Android Gradle插件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获得相同的结果,我必须在“运行/调试配置”面板中明确输入一些值,即在VM选项中输入-Ddebug=true
之类的值。
现在,这是一个简单的示例,但是我真正想做的是向java.library.path
属性添加一些路径,以便能够加载在项目中编译的JNI库。 (我确实需要编写一些使用修改后的SQLite库的测试,因此此处不选择不使用JNI)
在设置其他选项时它确实起作用,但是我认为这非常不方便,因为我无法在配置选项中输入基于变量的值(或者至少我不知道如何操作)。总结一下:在设置或更改值时,我确实必须经过一堆配置屏幕,我真的希望在配置文件中占有一席之地。
Android Studio是否应该以某种方式利用build.gradle
文件中指定的值?如果不是,则文档不会明确说明testOptions.unitTests.all
设置只能通过gradlew
调用来使用。
答案 0 :(得分:-1)
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.