我所有的测试过去都可以在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' }
}
}