加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何从dsl生成UI测试?

发布时间:2020-12-15 02:11:53 所属栏目:Java 来源:网络整理
导读:我不确定这个问题属于SO,因为它可能是广泛的,但我不知道在哪里问它(我没有找到更好的stackexchange站点). 上下文 我正在使用UiAutomator在android上编写一些Ui测试.我创建了一些函数来简化测试的编写,就像文档中的那样 public void startMainActivityFromHom
我不确定这个问题属于SO,因为它可能是广泛的,但我不知道在哪里问它(我没有找到更好的stackexchange站点).

上下文

我正在使用UiAutomator在android上编写一些Ui测试.我创建了一些函数来简化测试的编写,就像文档中的那样

public void startMainActivityFromHomeScreen() {
    /*Start the app from the home screen*/
}

作为开发人员,这很好用.但非技术人员(签约所有者)不能轻易使用此功能来编写测试.

需求

我正在寻找非技术用户使用我已定义的函数编写一些脚本的方法.这是一个虚拟示例(脚本格式和操作)

Suite: Launch the app twice from the home screen

Case: Launch the app for the first time
  Do startMainActivityFromHomeScreen
  Expect ...

Case: Launch the app for the second time
  Do startMainActivityFromHomeScreen
  Expect ...

这里重要的是与java函数交互.我知道像calabash这样的其他工具,但它不提供java接口.

目前的做法

这是一个想法(没有实现)

>将所有函数放在lib中
>编写一个groovy dsl(因为groovy与java很好地交互),这允许非技术用户轻松编写脚本
>创建一个java程序,它将评估groovy脚本并生成相关的android代码源(使用lib(from(1))作为gradle依赖项).
>运行gradle androidTestCompile

由于函数位于lib中,因此开发人员可以轻松地将其包含在项目中并将其用于其中.因此,同一个lib可以用于所有用户.

我讨厌这个想法,因为我必须从我的代码生成代码源,但这是我唯一拥有的代码.

问题

>这种方法是否像我认为的那样可怕?
>你知道另一种方法吗?

解决方法

我查看了 https://cucumber.io/docs/reference/jvm#java,它是一个库,通过让你将正则表达式与Java测试方法相关联来完成你正在寻找的东西.

您的Java代码看起来像:

@When("^I open the app from the (main|home) screen$")
public void openApp(String launchScreen) { 
    ... 
}

测试文件看起来像:

Feature: Launching app

Scenario: Launching from first screen
    When I open the app from the main screen
    Then I see a blue icon...

Scenario: Launching from second screen
    When I open the app from the second screen
    Then I see a green icon...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读