kotlinでテストコードを書く
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) } }
//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); } }
//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
//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' }