测试不便:Android Studio JUnit vs Gradle-based:testOptions被Android Studio忽略
以下是通过Android Studio 3.4、Android Gradle插件3.3.2和Gradle 4.10.3完成的 在测试不便:Android Studio JUnit vs Gradle-based:testOptions被Android Studio忽略,android,unit-testing,android-studio,gradle,android-gradle-plugin,Android,Unit Testing,Android Studio,Gradle,Android Gradle Plugin,以下是通过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 SysPr
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
调用使用。如何加载JNI库并不是我真正要问的问题(如果我在配置面板中指定路径,它会起作用——对不起),从“java.library.path”来看如果我没有指定任何不同的内容,那么将库放在其他地方似乎不会有什么帮助。还要注意,我正在进行本地单元测试,而不是在设备上进行测试。
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.