kotlinでテストコードを書く

31

Upload: shoichi-matsuda

Post on 09-Jan-2017

1.886 views

Category:

Technology


2 download

TRANSCRIPT

android { sourceSets { main.java.srcDirs += 'src/main/kotlin' test.java.srcDirs += 'src/test/kotlin' androidTest.java.srcDirs += 'src/androidTest/kotlin' } }

//ExampleUnitTest.java public class ExampleUnitTest { @Test public void addition_isCorrect() { assertEquals(4, 2 + 2); } }

//ExampleUnitTest.kt class ExampleUnitTest { @Test fun addition_isCorrect() { assertEquals(4, 2 + 2) } }

//app/build.gradle dependencies { testCompile 'org.mockito:mockito-core:1.10.19' }

//KotlinSimpleMockitoTest.kt class KotlinSimpleMockitoTest { @Test fun Context () {

val context = Mockito.mock(Context::class.java) Mockito.`when`(context.packageName).thenReturn("shoma2da") val packageName = context.getPackageName(); Assert.assertEquals("shoma2da", packageName); } }

//User.kt class User(val birthYear:Int) { fun getAge() = 2016 - birthYear }

//UserTest.kt class UserTest { @Test fun User () {

val user = Mockito.mock(User::class.java) Mockito.`when`(user.getAge()).thenReturn(1)

val age = user.getAge()

Assert.assertEquals(1, age) } }

//logcat

org.mockito.exceptions.base.MockitoException: Cannot mock/spy class YOUR_PACKAGE.User Mockito cannot mock/spy following: - final classes - anonymous classes - primitive types

open

//User.kt open class User(val birthYear:Int) { open fun getAge() = 2016 - birthYear }

//User.kt interface User { fun getAge():Int }

class UserImpl(val birthYear:Int) : User { override fun getAge() = 2016 - birthYear }

//UserTest.kt @RunWith(PowerMockRunner::class) @PrepareForTest(User::class) class UserTest { @Test fun User () {

val user = PowerMockito.mock(User::class.java) Mockito.`when`(user.getAge()).thenReturn(1)

val age = user.getAge()

Assert.assertEquals(1, age) } }

//build.gradle dependencies { testCompile 'org.powermock:powermock-module-junit4:1.6.2' testCompile 'org.powermock:powermock-api-mockito:1.6.2' }