与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都是一个提供自己的数据的测试用例。

每个“步骤”是在GivenWhenThen类的扩展,如下所示:

 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 } 

所以! 我在这里得到反馈,批评和/或建议。

我真的不知道这是否是这个问题的地方(是一个吗?)。