Android 未模拟单元测试位置
Android unit testing Location not mocked
我正在尝试测试我的演示者,我需要一个模拟位置,但是,我得到 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
我正在尝试测试我的演示者,我需要一个模拟位置,但是,我得到 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