Все мои тесты работали нормально в Travis CI. После того, как я обновил свой проект до версии 5.6, некоторые из моих модульных тестов не прошли на Travis CI, но прошли локально. Они потерпели неудачу со следующим сообщением:
java.lang.SecurityException
Неудачный тест - это тот, который должен иметь доступ к контексту Android для небольших операций. Мне нужно запустить их под инструментарием регистрации, но я хочу оставить их в качестве юнит-теста. Я пробовал @RunWith(RobolectricTestRunner::class)
и @RunWith(AndroidJUnit4::class)
Например, этот тест, который тестирует расширение представления, которое позволяет мне изменять видимость моего представления
@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' }
}
}