Как использовать объекты Location в тестах? - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь написать тесты для проверки кода, манипулирующего Местоположение объектов. Используя аннотацию @Before JUnit, я хочу инициализировать экземпляр Location следующим образом:

@Before
fun init_service() {
    location = Location(LocationManager.GPS_PROVIDER)
    System.out.println("init $location")
}

При выполнении моих тестов вывод не очень удовлетворительный, печать: init null.

Зная, что этот фрагмент кода работает в классическом контексте, существует ли особый способ инициализации экземпляров объекта в тестовом контексте?

1 Ответ

1 голос
/ 08 июля 2019

Чтобы протестировать специфичный для 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)
    }
}
...