具有上下文的Android单元测试在Travis CI上使用“ java.lang.SecurityException”失败,但自更新Gradle 5.6起在本地成功

我所有的测试过去都可以在Travis CI中正常运行。 自从我将项目升级到gradle 5.6之后,我的某些单元测试在Travis CI上失败了,但是在本地成功了。 他们失败并显示以下消息:

    java.lang.SecurityException

失败的测试是需要访问Android Context才能进行小操作的测试。我需要在注册工具下运行它们,但要保留它们作为单元测试。 我已经尝试过@RunWith(RobolectricTestRunner::class)@RunWith(AndroidJUnit4::class)

例如,该测试正在测试View Extension,该测试允许我更改视图的可见性

@Config(sdk = [Build.VERSION_CODES.P])
@RunWith(AndroidJUnit4::class)
class ViewExtUnitTest {

    private lateinit var context: Context

    @Before
    fun setup() {
        context = ApplicationProvider.getapplicationContext<WatchMyBackApplication>()
    }

    @Test
    @Throws(Exception::class)
    fun whenTrue_viewVisible(){
        val view = View(context)
        view.visibleOrInvisible(true)
        assertThat(view.visibility).isEqualTo(VISIBLE)

    }
}

它曾经在本地和Travis CI上运行良好,现在仅在Travis CI上失败

这是我的gradle配置

buildscript {
    ext.kotlin_version = '1.3.60-eap-25'
    repositories {
        google()
        jcenter()
        maven { url "https://maven.google.com" }
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.0-alpha01'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.dicedmelon.gradle:jacoco-android:0.1.4'
        classpath 'com.google.gms:google-services:4.3.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }

    }
}

sagaxu 回答:具有上下文的Android单元测试在Travis CI上使用“ java.lang.SecurityException”失败,但自更新Gradle 5.6起在本地成功

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3141948.html

大家都在问