与Android的BDD与Kotlin
我正在考虑Android上的BDD测试方法。
示例应用程序 – 一个简单的使者 – 已经在Kotlin中完成,测试也是如此。
我结束了这样的事情:
class IGotYourMessage : Scenario<LoginActivity>(LoginActivity::class.java, { Given() .iAmOnLoginScreen() .When() .iLogin() .Then() .iSeeContactsList() .iSeeAContact() .When() .iSelectAContact() .Then() .iSeeMessagesList() .iSeeAMessage() .With(hashMapOf( "email" to "john@doe.com", "password" to "foo", "contactFirstName" to "Jane", "contactLastName" to "Doe", "messageText" to "Hello John!" )) .With(hashMapOf( "email" to "jane@doe.com", "password" to "bar", "contactFirstName" to "John", "contactLastName" to "Doe", "messageText" to "Hello John!" )) })
我结束了这个评估:
- 给定是一个开始状态
- 什么时候是一个行动
- Then是一个结束状态
- Then也是下一个动作的开始状态
所以我可以给定 – >当 – >然后 – >当 – >然后。
每个With
都是一个提供自己的数据的测试用例。
每个“步骤”是在Given
, When
或Then
类的扩展,如下所示:
fun Then.iSeeAContact() { add({ (it["contactFirstName"] as String).canSee() (it["contactLastName"] as String).canSee() }) return this }
canSee
方法是String
上的扩展,使用Espresso :
fun String.canSee(): String { onView(withText(this)).check(matches(isDisplayed())) return this }
所以! 我在这里得到反馈,批评和/或建议。
我真的不知道这是否是这个问题的地方(是一个吗?)。