Bei Espresso-Tests auf Android kann der simulierte Standort nicht in Google Maps angezeigt werden

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Bei Espresso-Tests auf Android kann der simulierte Standort nicht in Google Maps angezeigt werden

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?

Top