by Guest » 13 Jan 2025, 08:39
Ich verwende Espresso-Tests, um meine Android-App (targetSDKVersion: 34) zu testen. Die App enthält ein Modul, das Google Maps und Ortungsdienste nutzt. Ich möchte den Standort nachahmen, um Benutzerbewegungen während des Tests zu simulieren. Ich verwende den Android-Emulator und den folgenden Code, um den simulierten Speicherort festzulegen:
Code: Select all
fun setupMockLocationApp() {
val packageName = InstrumentationRegistry.getInstrumentation().targetContext.packageName
val uiAutomation = InstrumentationRegistry.getInstrumentation().uiAutomation
uiAutomation.executeShellCommand("appops set $packageName android:mock_location allow")
}
fun setMockLocationFused(lat: Double, lng: Double, accuracy: Float = 3F) {
val context = InstrumentationRegistry.getInstrumentation().targetContext
val fusedLocationClient: FusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context)
Tasks.await(fusedLocationClient.setMockMode(true))
val location = Location(LocationManager.GPS_PROVIDER).apply {
this.latitude = lat
this.longitude = lng
this.accuracy = accuracy
this.time = System.currentTimeMillis()
}
Tasks.await(fusedLocationClient.setMockLocation(location))
}
Ich rufe diese Funktionen innerhalb des Testaufbaus auf:
Code: Select all
@Before
fun setUp() {
setupMockLocationApp()
setMockLocationFused(lat, lng)
}
Trotz der Einstellung des Scheinstandorts zeigt Google Maps den blauen Standortpunkt nicht an.
Was könnte dieses Problem verursachen und wie kann ich das sicherstellen? dass der simulierte Standort in Google Maps angezeigt wird?
Ich verwende Espresso-Tests, um meine Android-App (targetSDKVersion: 34) zu testen. Die App enthält ein Modul, das Google Maps und Ortungsdienste nutzt. Ich möchte den Standort nachahmen, um Benutzerbewegungen während des Tests zu simulieren. Ich verwende den Android-Emulator und den folgenden Code, um den simulierten Speicherort festzulegen:
[code]fun setupMockLocationApp() {
val packageName = InstrumentationRegistry.getInstrumentation().targetContext.packageName
val uiAutomation = InstrumentationRegistry.getInstrumentation().uiAutomation
uiAutomation.executeShellCommand("appops set $packageName android:mock_location allow")
}
fun setMockLocationFused(lat: Double, lng: Double, accuracy: Float = 3F) {
val context = InstrumentationRegistry.getInstrumentation().targetContext
val fusedLocationClient: FusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context)
Tasks.await(fusedLocationClient.setMockMode(true))
val location = Location(LocationManager.GPS_PROVIDER).apply {
this.latitude = lat
this.longitude = lng
this.accuracy = accuracy
this.time = System.currentTimeMillis()
}
Tasks.await(fusedLocationClient.setMockLocation(location))
}
[/code]
Ich rufe diese Funktionen innerhalb des Testaufbaus auf:
[code]@Before
fun setUp() {
setupMockLocationApp()
setMockLocationFused(lat, lng)
}
[/code]
Trotz der Einstellung des Scheinstandorts zeigt Google Maps den blauen Standortpunkt nicht an.
Was könnte dieses Problem verursachen und wie kann ich das sicherstellen? dass der simulierte Standort in Google Maps angezeigt wird?