Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
测试不便:Android Studio JUnit vs Gradle-based:testOptions被Android Studio忽略_Android_Unit Testing_Android Studio_Gradle_Android Gradle Plugin - Fatal编程技术网

测试不便:Android Studio JUnit vs Gradle-based:testOptions被Android Studio忽略

测试不便: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

以下是通过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
调用使用。

如何加载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.