diff --git a/pom.xml b/pom.xml
index 192ed5b7a..610ca7628 100644
--- a/pom.xml
+++ b/pom.xml
@@ -270,24 +270,10 @@
- com.nhaarman
- mockito-kotlin
- 1.5.0
+ io.mockk
+ mockk
+ 1.9.1
test
-
-
- org.jetbrains.kotlin
- kotlin-stdlib
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.mockito
- mockito-core
-
-
diff --git a/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt b/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt
index 016fff630..693da40f3 100644
--- a/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt
+++ b/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt
@@ -15,14 +15,10 @@
*/
package org.springframework.data.convert
-import com.nhaarman.mockito_kotlin.any
-import com.nhaarman.mockito_kotlin.doReturn
-import com.nhaarman.mockito_kotlin.whenever
+import io.mockk.every
+import io.mockk.mockk
import org.assertj.core.api.Assertions
import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.Mock
-import org.mockito.junit.MockitoJUnitRunner
import org.springframework.data.annotation.PersistenceConstructor
import org.springframework.data.mapping.PersistentEntity
import org.springframework.data.mapping.context.SamplePersistentProperty
@@ -35,23 +31,23 @@ import java.lang.IllegalArgumentException
* Unit tests for [KotlinClassGeneratingEntityInstantiator] creating instances using Kotlin data classes.
*
* @author Mark Paluch
+ * @author Sebastien Deleuze
*/
-@RunWith(MockitoJUnitRunner::class)
@Suppress("UNCHECKED_CAST")
class KotlinClassGeneratingEntityInstantiatorUnitTests {
- @Mock lateinit var entity: PersistentEntity<*, *>
- @Mock lateinit var provider: ParameterValueProvider
+ val provider = mockk>()
@Test // DATACMNS-1126
fun `should create instance`() {
- val entity = this.entity as PersistentEntity
+ val entity = mockk>()
val constructor = PreferredConstructorDiscoverer.discover(Contact::class.java)
- doReturn("Walter", "White").`when`(provider).getParameterValue(any())
- doReturn(constructor).whenever(entity).persistenceConstructor
- doReturn(constructor.constructor.declaringClass).whenever(entity).type
+ every { provider.getParameterValue(any()) }.returnsMany("Walter", "White")
+ every { entity.persistenceConstructor } returns constructor
+ every { entity.type } returns constructor.constructor.declaringClass
+ every { entity.typeInformation } returns mockk()
val instance: Contact = KotlinClassGeneratingEntityInstantiator().createInstance(entity, provider)
@@ -62,15 +58,18 @@ class KotlinClassGeneratingEntityInstantiatorUnitTests {
@Test // DATACMNS-1126
fun `should create instance and fill in defaults`() {
- val entity = this.entity as PersistentEntity
+ val entity = mockk>()
val constructor = PreferredConstructorDiscoverer.discover(ContactWithDefaulting::class.java)
- doReturn("Walter", null, "Skyler", null, null, null, null, null, null, null, /* 0-9 */
+ every { provider.getParameterValue(any()) }.returnsMany(
+ "Walter", null, "Skyler", null, null, null, null, null, null, null, /* 0-9 */
null, null, null, null, null, null, null, null, null, null, /* 10-19 */
null, null, null, null, null, null, null, null, null, null, /* 20-29 */
- null, "Walter", null, "Junior", null).`when`(provider).getParameterValue(any())
- doReturn(constructor).whenever(entity).persistenceConstructor
- doReturn(constructor.constructor.declaringClass).whenever(entity).type
+ null, "Walter", null, "Junior", null)
+
+ every { entity.persistenceConstructor } returns constructor
+ every { entity.type } returns constructor.constructor.declaringClass
+ every { entity.typeInformation } returns mockk()
val instance: ContactWithDefaulting = KotlinClassGeneratingEntityInstantiator().createInstance(entity, provider)
@@ -85,11 +84,13 @@ class KotlinClassGeneratingEntityInstantiatorUnitTests {
@Test // DATACMNS-1200
fun `absent primitive value should cause MappingInstantiationException`() {
- val entity = this.entity as PersistentEntity
+ val entity = mockk>()
val constructor = PreferredConstructorDiscoverer.discover(WithBoolean::class.java)
- doReturn(constructor).whenever(entity).persistenceConstructor
- doReturn(constructor.constructor.declaringClass).whenever(entity).type
+ every { provider.getParameterValue(any()) } returns null
+ every { entity.persistenceConstructor } returns constructor
+ every { entity.type } returns constructor.constructor.declaringClass
+ every { entity.typeInformation } returns mockk()
Assertions.assertThatThrownBy { KotlinClassGeneratingEntityInstantiator().createInstance(entity, provider) } //
.isInstanceOf(MappingInstantiationException::class.java) //
@@ -100,11 +101,20 @@ class KotlinClassGeneratingEntityInstantiatorUnitTests {
@Test // DATACMNS-1200
fun `should apply primitive defaulting for absent parameters`() {
- val entity = this.entity as PersistentEntity
+ val entity = mockk>()
val constructor = PreferredConstructorDiscoverer.discover(WithPrimitiveDefaulting::class.java)
- doReturn(constructor).whenever(entity).persistenceConstructor
- doReturn(constructor.constructor.declaringClass).whenever(entity).type
+ every { provider.getParameterValue(any()) } returns null
+ every { provider.getParameterValue(any()) } returns null
+ every { provider.getParameterValue(any()) } returns null
+ every { provider.getParameterValue(any()) } returns null
+ every { provider.getParameterValue(any()) } returns null
+ every { provider.getParameterValue(any()) } returns null
+ every { provider.getParameterValue(any()) } returns null
+ every { provider.getParameterValue(any()) } returns null
+ every { entity.persistenceConstructor } returns constructor
+ every { entity.type } returns constructor.constructor.declaringClass
+ every { entity.typeInformation } returns mockk()
val instance: WithPrimitiveDefaulting = KotlinClassGeneratingEntityInstantiator().createInstance(entity, provider)
@@ -121,12 +131,13 @@ class KotlinClassGeneratingEntityInstantiatorUnitTests {
@Test // DATACMNS-1338
fun `should create instance using @PersistenceConstructor`() {
- val entity = this.entity as PersistentEntity
+ val entity = mockk>()
val constructor = PreferredConstructorDiscoverer.discover(CustomUser::class.java)
- doReturn("Walter").`when`(provider).getParameterValue(any())
- doReturn(constructor).whenever(entity).persistenceConstructor
- doReturn(constructor.constructor.declaringClass).whenever(entity).type
+ every { provider.getParameterValue(any()) } returns "Walter"
+ every { entity.persistenceConstructor } returns constructor
+ every { entity.type } returns constructor.constructor.declaringClass
+ every { entity.typeInformation } returns mockk()
val instance: CustomUser = KotlinClassGeneratingEntityInstantiator().createInstance(entity, provider)
diff --git a/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt b/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt
index 7fd86ee20..f959211b3 100644
--- a/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt
+++ b/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt
@@ -15,14 +15,10 @@
*/
package org.springframework.data.convert
-import com.nhaarman.mockito_kotlin.any
-import com.nhaarman.mockito_kotlin.doReturn
-import com.nhaarman.mockito_kotlin.whenever
+import io.mockk.every
+import io.mockk.mockk
import org.assertj.core.api.Assertions
import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.Mock
-import org.mockito.junit.MockitoJUnitRunner
import org.springframework.data.mapping.PersistentEntity
import org.springframework.data.mapping.context.SamplePersistentProperty
import org.springframework.data.mapping.model.ParameterValueProvider
@@ -32,22 +28,21 @@ import org.springframework.data.mapping.model.PreferredConstructorDiscoverer
* Unit tests for [ReflectionEntityInstantiator] creating instances using Kotlin data classes.
*
* @author Mark Paluch
+ * @author Sebastien Deleuze
*/
-@RunWith(MockitoJUnitRunner::class)
@Suppress("UNCHECKED_CAST")
class ReflectionEntityInstantiatorDataClassUnitTests {
- @Mock lateinit var entity: PersistentEntity<*, *>
- @Mock lateinit var provider: ParameterValueProvider
+ val provider = mockk>()
@Test // DATACMNS-1126
fun `should create instance`() {
- val entity = this.entity as PersistentEntity
+ val entity = mockk>()
val constructor = PreferredConstructorDiscoverer.discover(Contact::class.java)
- doReturn("Walter", "White").`when`(provider).getParameterValue(any())
- doReturn(constructor).whenever(entity).persistenceConstructor
+ every { provider.getParameterValue(any()) }.returnsMany("Walter", "White")
+ every { entity.persistenceConstructor } returns constructor
val instance: Contact = ReflectionEntityInstantiator.INSTANCE.createInstance(entity, provider)
@@ -58,11 +53,11 @@ class ReflectionEntityInstantiatorDataClassUnitTests {
@Test // DATACMNS-1126
fun `should create instance and fill in defaults`() {
- val entity = this.entity as PersistentEntity
+ val entity = mockk>()
val constructor = PreferredConstructorDiscoverer.discover(ContactWithDefaulting::class.java)
- doReturn("Walter", null).`when`(provider).getParameterValue(any())
- doReturn(constructor).whenever(entity).persistenceConstructor
+ every { provider.getParameterValue(any()) }.returnsMany("Walter", null)
+ every { entity.persistenceConstructor } returns constructor
val instance: ContactWithDefaulting = ReflectionEntityInstantiator.INSTANCE.createInstance(entity, provider)
diff --git a/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt b/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt
index 4e00aba0c..625658657 100644
--- a/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt
+++ b/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt
@@ -15,28 +15,30 @@
*/
package org.springframework.data.repository
-import com.nhaarman.mockito_kotlin.verify
+import io.mockk.every
+import io.mockk.mockk
+import io.mockk.verify
+import org.junit.Assert.assertEquals
import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.Answers
-import org.mockito.Mock
-import org.mockito.junit.MockitoJUnitRunner
import org.springframework.data.repository.sample.User
+import java.util.*
+import kotlin.test.assertNull
/**
* Unit tests for CrudRepositoryExtensions.
*
* @author Sebastien Deleuze
*/
-@RunWith(MockitoJUnitRunner::class)
class CrudRepositoryExtensionsTests {
- @Mock(answer = Answers.RETURNS_MOCKS)
- lateinit var repository: CrudRepository
+ var repository = mockk>()
@Test // DATACMNS-1346
fun `CrudRepository#findByIdOrNull() extension should call its Java counterpart`() {
- repository.findByIdOrNull("foo")
- verify(repository).findById("foo")
+ val user = User()
+ every { repository.findById("foo") }.returnsMany(Optional.of(user), Optional.empty())
+ assertEquals(user, repository.findByIdOrNull("foo"))
+ assertNull(repository.findByIdOrNull("foo"))
+ verify(exactly = 2) { repository.findById("foo") }
}
}