【发布时间】:2016-12-13 17:14:03
【问题描述】:
Kotlin 扩展功能很棒。但是我怎么能对它们进行单元测试呢?尤其是那些 Android SDK 提供的类(例如 Context、Dialog)。
我在下面提供了两个示例,如果有人可以分享我如何对它们进行单元测试,或者如果我真的想对它们进行单元测试,我需要以不同的方式编写它们。
fun Context.getColorById(colorId: Int): Int {
if (Build.VERSION.SDK_INT >= 23)
return ContextCompat.getColor(this, colorId)
else return resources.getColor(colorId)
}
和
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
}
任何建议都会有所帮助。谢谢!
【问题讨论】:
-
嗨,我认为您不需要对这些功能进行单元测试。首先,从 android 资源中获取颜色,而不是依赖于您的应用程序代码。第二个显示errorDialog,你为什么不用Espresso或者Robotium或者其他UI测试框架来检查它是否正确显示?
-
感谢 piotrek。该代码仅作为示例。该问题的主要要点是探索如何在扩展功能上进行单元测试,以防万一需要测试其中的某些逻辑。这是无法实现的,还是我错过了什么?谢谢。
-
我也在找它。 @Elye 你找到了吗?
标签: android unit-testing kotlin kotlin-android-extensions kotlin-extension