Модульный тест не пройден по исключению в рамках делегирования класса.
Я использую все новые версии AndroidX, Robolectric, Dagger 2, Android Architecture Components, RxJava.Я хотел бы создать тест в Robolectric моей деятельности, который содержит пользовательский вид с делегированием.Кроме того, мне нужно создать ShadowView моего собственного.
Когда я запускаю тест, я получаю ошибку при вызове методов интерфейса, так как NullPointerException
.
Структура выглядитthis:
interface Delegation {
fun onSmth()
}
class DelegationImpl(): Delegation {
override fun onSmth() {
println("Hello#_#World")
}
}
class Foo : Delegation by DelegationImpl()
@Implements(Foo::class)
class ShadowFoo : ShadowViewGroup() {
@Implementation
override fun __constructor__(context: Context, attrs: AttributeSet, styleRes: Int) = Unit
}
Как реализовать делегирование классов для этой ситуации?Возможно, конструктор не вызывается, а делегирование тоже не вызывается, но я не хочу здесь вызывать конструктор, так что такое решение?
ОБНОВЛЕНИЕ
Здесьis stacktrace:
java.lang.NullPointerException
at com.example.app.MapView.addOnGpsPointSelectedListener(MapView.kt)
at com.example.app.MapActivity.onCreate(MapActivity.kt:39)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:674)
at org.robolectric.android.controller.ActivityController.lambda$create$0(ActivityController.java:69)
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:365)
at org.robolectric.android.controller.ActivityController.create(ActivityController.java:69)
at org.robolectric.android.controller.ActivityController.create(ActivityController.java:74)
at org.robolectric.android.controller.ActivityController.setup(ActivityController.java:210)
at org.robolectric.Robolectric.setupActivity(Robolectric.java:76)...
MapView реализует интерфейс с делегированием так же, как описано выше.