我正在尝试编写测试来测试一些处理Location对象的代码。
使用@Before
JUnit批注,我想通过以下方式初始化Location实例:
@Before
fun init_service() {
location = Location(LocationManager.GPS_PROVIDER)
System.out.println("init $location")
}
执行测试时,输出结果并不令人满意,打印:init null
。
知道这段代码是在经典上下文中工作的,是否有一种特殊的方法可以在测试上下文中初始化对象实例?
答案 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)
}
}