安卓单元测试 位置不被嘲笑



我正在尝试测试我的演示者,我需要一个模拟位置,但是,我得到 null 或具有默认值,例如 0.0 表示纬度、经度、经度、方位角等

我已经尝试创建一个新的 Location 对象并初始化我需要的所有字段。

    val latitude = 37.422
    val longitude = -122.084
    val mockLocation = mock(Location::class.java)
    mockLocation.latitude = latitude
    mockLocation.longitude = longitude
    presenter.loadsAirpots(latitude, longitude)
    presenter.locationChanged(mockLocation)
    System.out.println(mockLocation.latitude)

我预计纬度为 37.422,但实际输出为 0.0

当你模拟一个对象时,不会调用真正的实现。您正在尝试调用setLatitude(latitude)但它不会更改值。

如果你想模拟对象,你应该做:

val mockLocation = mock(Location::class.java)
given(mockLocation.getLatitude()).willReturn(latitude)
given(mockLocation.getLongitude()).willReturn(longitude)

或者你可以创建一个真实的对象:

val realLocation = Location("provider")
realLocation.latitude = latitude
realLocation.longitude = longitude

最新更新