Kotlin Erweiterungsfunktion ist großartig. Aber wie könnte ich einen Komponententest durchführen? Besonders die von Android SDK bereitgestellten Klassen (z. B. Context, Dialog).Komponententest auf Kotlin-Erweiterungsfunktion auf Android SDK-Klassen
Ich biete zwei Beispiele unten, und wenn jemand teilen könnte, wie ich sie Einheit prüfen könnte, oder wenn ich sie anders schreiben muss, wenn ich wirklich Unit-Test sie wollen.
fun Context.getColorById(colorId: Int): Int {
if (Build.VERSION.SDK_INT >= 23)
return ContextCompat.getColor(this, colorId)
else return resources.getColor(colorId)
}
und
fun Dialog.setupErrorDialog(body : String, onOkFunc:() -> Unit = {}): Dialog {
window.requestFeature(Window.FEATURE_NO_TITLE)
this.setContentView(R.layout.dialog_error_layout)
(findViewById(R.id.txt_body) as TextView).text = body
(findViewById(R.id.txt_header) as TextView).text = context.getString(R.string.dialog_title_error)
(findViewById(R.id.txt_okay)).setOnClickListener{
onOkFunc()
dismiss()
}
return this
}
Jede Anregung helfen würde. Vielen Dank!
Hallo, ich glaube nicht, dass Sie diese Funktionen im Unit-Test testen müssen. Erstens, bekommt Farbe von Android-Ressourcen und hängt nicht von Ihrem Anwendungscode ab. Der zweite zeigt errorDialog, warum benutzen Sie nicht Espresso oder Robotium oder ein anderes UI-Test-Framework, um zu überprüfen, ob es richtig angezeigt wird? – piotrek1543
Danke piotrek. Der Code ist nur zum Beispiel. Der Hauptteil der Frage besteht darin, zu untersuchen, wie Unit-Tests mit der Extension-Funktion durchgeführt werden können, falls eine gewisse Logik dafür benötigt wird. Ist das etwas unerreichbar oder fehlt mir etwas? Vielen Dank. – Elye
Ich suche es auch. Hast du es @Elye gefunden? – elsennov