如何在测试中使用位置对象?

时间:2019-07-08 12:56:15

标签: android unit-testing kotlin location

我正在尝试编写测试来测试一些处理Location对象的代码。 使用@Before JUnit批注,我想通过以下方式初始化Location实例:

@Before
fun init_service() {
    location = Location(LocationManager.GPS_PROVIDER)
    System.out.println("init $location")
}

执行测试时,输出结果并不令人满意,打印:init null

知道这段代码是在经典上下文中工作的,是否有一种特殊的方法可以在测试上下文中初始化对象实例?

1 个答案:

答案 0 :(得分:1)

要测试特定于Android的代码,您需要屏蔽SDK类。您可以使用Robolectric。只需将依赖项添加到build.gradle并用@RunWith(RobolectricTestRunner::class)注释测试类

import android.location.Location
import android.location.LocationManager
import org.junit.Before
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner

@RunWith(RobolectricTestRunner::class)
class Test {

    @Before
    fun init_service() {
        val location = Location(LocationManager.GPS_PROVIDER)
        location.latitude = 22.234
        location.longitude = 23.394
        println(location)
    }
}