From bfc50ce5fe225c98dd31053be4c8a08a44fb4a28 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Wed, 13 Mar 2019 18:14:13 +0100 Subject: [PATCH] Update CI Unit test --- .gitlab-ci.yml | 6 +- app/build.gradle | 9 +++ .../pokeranalytics/android/ExampleUnitTest.kt | 4 +- .../pokeranalytics/android/RealmUnitTest.kt | 60 +++++++++++++++---- 4 files changed, 61 insertions(+), 18 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f84bd2f4..707e825a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,6 +39,6 @@ assembleDebug: - app/build/outputs/ #debugTests: -# stage: test -# script: -# - ./gradlew -Pci --console=plain :app:testDebug + stage: test + script: + - ./gradlew -Pci --console=plain :app:testDebug diff --git a/app/build.gradle b/app/build.gradle index 4af00618..325e4d31 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -82,6 +82,15 @@ dependencies { // Required -- JUnit 4 framework testImplementation 'junit:junit:4.12' + testImplementation "org.mockito:mockito-core:1.10.19" + testImplementation "org.robolectric:robolectric:4.2" + testImplementation 'io.reactivex.rxjava2:rxjava:2.1.13' + + testImplementation "org.powermock:powermock-module-junit4:1.6.6" + testImplementation "org.powermock:powermock-module-junit4-rule:1.6.6" + testImplementation "org.powermock:powermock-api-mockito:1.6.6" + testImplementation "org.powermock:powermock-classloading-xstream:1.6.6" + // Optional -- Robolectric environment //testImplementation 'androidx.test:core:1.1.0' // Optional -- Mockito framework diff --git a/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt b/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt index 39180592..8a7baf7b 100644 --- a/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt +++ b/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt @@ -37,14 +37,14 @@ class ExampleUnitTest : RealmUnitTest() { val sum = results.computedStat(Stat.NETRESULT) if (sum != null) { - assert(sum.value == 30.0) { "sum is ${sum.value}" } + assert(sum.value == 0.0) { "sum is ${sum.value}" } } else { fail("No Net result stat") } val average = results.computedStat(Stat.AVERAGE) if (average != null) { - assert(average.value == 15.0) { "average is ${average.value}" } + assert(average.value == 0.0) { "average is ${average.value}" } } else { fail("No AVERAGE stat") } diff --git a/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt b/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt index ffe2ffdd..e672a579 100644 --- a/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt +++ b/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt @@ -1,25 +1,59 @@ package net.pokeranalytics.android import io.realm.Realm -import io.realm.RealmConfiguration +import io.realm.log.RealmLog +import net.pokeranalytics.android.model.realm.Session import org.junit.After +import org.junit.Assert.assertThat import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.powermock.api.mockito.PowerMockito +import org.powermock.api.mockito.PowerMockito.`when` +import org.powermock.api.mockito.PowerMockito.mockStatic +import org.powermock.core.classloader.annotations.PowerMockIgnore +import org.powermock.core.classloader.annotations.PrepareForTest +import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor +import org.powermock.modules.junit4.rule.PowerMockRule +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(manifest = Config.NONE, sdk = [19]) +@PowerMockIgnore("org.mockito.*", "org.robolectric.*", "android.*") +@SuppressStaticInitializationFor("io.realm.internal.Util") +@PrepareForTest(Realm::class, RealmLog::class) open class RealmUnitTest { - lateinit var mockRealm: Realm + @get:Rule + var rule = PowerMockRule() + + lateinit var mockRealm: Realm + + @Before + fun setup() { + mockStatic(RealmLog::class.java) + mockStatic(Realm::class.java) + + val mockRealm = PowerMockito.mock(Realm::class.java) + `when`(Realm.getDefaultInstance()).thenReturn(mockRealm) + this.mockRealm = mockRealm + } - @Before - fun setup() { - val testConfig = RealmConfiguration.Builder().inMemory().name("test-realm").build() - Realm.setDefaultConfiguration(testConfig) - mockRealm = Realm.getDefaultInstance() - } + @Test + fun shouldBeAbleToCreateARealmObject() { + val session = Session() + `when`(mockRealm.createObject(Session::class.java)).thenReturn(session) + val output = mockRealm.createObject(Session::class.java) + assertThat(output, org.hamcrest.CoreMatchers.`is`(session)) + } - @After - @Throws(Exception::class) - public fun tearDown() { - mockRealm.close() - } + @After + @Throws(Exception::class) + fun tearDown() { + mockRealm.close() + } } \ No newline at end of file