测试带来的不便:Android Studio JUnit与Gradle基于:Android Studio忽略了testOptions

时间:2019-05-06 13:19:10

标签: android unit-testing android-studio gradle android-gradle

以下操作是使用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调用来使用。

1 个答案:

答案 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.