android - 测试不便:Android Studio JUnit vs Gradle based:testOptions被Android Studio忽略
问题描述
以下是使用 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 获得相同的结果,我必须明确地在“运行/调试配置”面板中输入一些值,即类似于-Ddebug=true
VM 选项中的值。
现在这是一个简单的例子,但我真正想做的是为java.library.path
属性添加一些路径,以便能够加载在项目中编译的 JNI 库。(我确实需要编写一些使用修改后的 SQLite 库的测试,所以这里不使用 JNI 不是一个选项)
它在设置附加选项时确实有效,但我认为这非常不方便,因为我无法在配置选项中输入基于变量的值(或者至少,我不知道如何输入)。总结一下:设置或更改值时,我确实必须经过一堆配置屏幕,我真的希望在配置文件中有一个位置。
Android Studio 不应该以某种方式使用build.gradle
文件中指定的值吗?如果没有,文档并没有明确说明这些testOptions.unitTests.all
设置只能通过gradlew
调用来使用。
解决方案
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.
推荐阅读
- r - 过滤数据完全由用户定义 r - 多列和过滤器
- c# - Wpf Xaml 如何使用现有项目源将文本块添加到画布?
- java - 要求您使用 ACTION_OPEN_DOCUMENT 或相关 API 获得访问权限
- sql - 进行正则表达式替换所有列的 psql 导出的最佳方法是什么?
- python - 为什么 python 在 tkinter 中只显示列表的前半部分?
- amazon-s3 - 合并 S3 中的小文件以创建 10 Mb 文件
- excel - 案例声明以防止打开某些文件?
- java - 序列化时间戳转换为秒
- android - 将可绘制数组与数组字符串进行比较 android studio
- javascript - 如何在 React 中使用来自 API 的动态数据创建树形显示?