diff --git a/build.gradle.kts b/build.gradle.kts index 85deef414..23367d2b4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,7 +18,8 @@ buildscript { google() } dependencies { - classpath("com.android.tools.build:gradle:3.1.3") + classpath("com.android.tools.build:gradle:3.4.1") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") } } diff --git a/sentry-android/build.gradle.kts b/sentry-android/build.gradle.kts index a19be1d67..20d1562c6 100644 --- a/sentry-android/build.gradle.kts +++ b/sentry-android/build.gradle.kts @@ -1,20 +1,25 @@ plugins { id("com.android.library") + id("kotlin-android") jacoco } dependencies { api(project(":sentry-core")) testImplementation("org.robolectric:robolectric:4.3") - testImplementation(kotlin("stdlib")) + testImplementation(kotlin("stdlib-jdk8")) testImplementation("org.jetbrains.kotlin:kotlin-test-junit:1.3.50") - testImplementation("junit:junit:4.12") + testImplementation("androidx.test:core:1.2.0") + testImplementation("androidx.test:runner:1.2.0") + testImplementation("androidx.test.ext:junit:1.1.1") } android { compileSdkVersion(29) + buildToolsVersion("29.0.2") defaultConfig { minSdkVersion(14) + targetSdkVersion(29) javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true diff --git a/sentry-android/src/test/java/io/sentry/android/AndroidTest.kt b/sentry-android/src/test/java/io/sentry/android/AndroidTest.kt deleted file mode 100644 index 4b47d7132..000000000 --- a/sentry-android/src/test/java/io/sentry/android/AndroidTest.kt +++ /dev/null @@ -1,22 +0,0 @@ -package io.sentry.android - -import android.app.Application -import android.content.Context -import org.junit.runner.RunWith -import org.robolectric.RobolectricTestRunner -import org.robolectric.Config -import androidx.test.core.app.ApplicationProvider -import org.robolectric.annotation.Config - -@RunWith(RobolectricTestRunner::class) -@Config(constants = BuildConfig::class, - application = AndroidTest.ApplicationStub::class, - sdk = [21]) -abstract class AndroidTest { - - fun context(): Context { - return ApplicationProvider.getApplicationContext() - } - - internal class ApplicationStub : Application() -} diff --git a/sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt b/sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt new file mode 100644 index 000000000..6cc7b880e --- /dev/null +++ b/sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt @@ -0,0 +1,6 @@ +package io.sentry.android + +import android.app.Application + +// so far not needed +class ApplicationStub : Application() diff --git a/sentry-android/src/test/java/io/sentry/android/SentryInitProviderTest.kt b/sentry-android/src/test/java/io/sentry/android/SentryInitProviderTest.kt index 3a242f21a..8be6b2042 100644 --- a/sentry-android/src/test/java/io/sentry/android/SentryInitProviderTest.kt +++ b/sentry-android/src/test/java/io/sentry/android/SentryInitProviderTest.kt @@ -1,20 +1,31 @@ package io.sentry.android +import android.content.Context import android.content.pm.ProviderInfo +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 import io.sentry.Sentry +import org.junit.runner.RunWith +import kotlin.test.BeforeTest import kotlin.test.Test -class SentryInitProviderTest : AndroidTest() { +@RunWith(AndroidJUnit4::class) +class SentryInitProviderTest { private var sentryInitProvider: SentryInitProvider = SentryInitProvider() + private lateinit var context: Context + + @BeforeTest + fun `set up`() { + context = ApplicationProvider.getApplicationContext() + } + @Test - fun MissingApplicationIdThrows() { -// fun `missing applicationId throws`() { + fun `missing applicationId throws`() { val providerInfo = ProviderInfo() - throw RuntimeException() providerInfo.authority = "com.google.android.gms.tests.common.firebaseinitprovider" - sentryInitProvider.attachInfo(context(), providerInfo) + sentryInitProvider.attachInfo(context, providerInfo) Sentry.init { o -> o.dsn = "test" } diff --git a/sentry-android/src/test/resources/io/sentry/android/robolectric.properties b/sentry-android/src/test/resources/io/sentry/android/robolectric.properties new file mode 100644 index 000000000..275f42f39 --- /dev/null +++ b/sentry-android/src/test/resources/io/sentry/android/robolectric.properties @@ -0,0 +1,2 @@ +sdk=21 +application=io.sentry.android.ApplicationStub diff --git a/sentry-core/build.gradle.kts b/sentry-core/build.gradle.kts index 4a37ce9b5..77ef6d68d 100644 --- a/sentry-core/build.gradle.kts +++ b/sentry-core/build.gradle.kts @@ -1,12 +1,11 @@ plugins { java - kotlin("jvm") version "1.3.50" + kotlin("jvm") jacoco } dependencies { - testImplementation(kotlin("stdlib")) - testImplementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.50") + testImplementation(kotlin("stdlib-jdk8")) testImplementation("org.jetbrains.kotlin:kotlin-test-junit:1.3.50") } diff --git a/sentry-core/src/main/java/io/sentry/Sentry.java b/sentry-core/src/main/java/io/sentry/Sentry.java index 4b324c360..b8bb51b7d 100644 --- a/sentry-core/src/main/java/io/sentry/Sentry.java +++ b/sentry-core/src/main/java/io/sentry/Sentry.java @@ -21,7 +21,9 @@ public static void init(OptionsConfiguration optionsConfiguration) { } static synchronized void init(SentryOptions options) { - currentClient.close(); + if (currentClient != null) { + currentClient.close(); + } currentClient = new SentryClient(options); }