Java 为指定平台(Android或iOS)运行自动测试。每次发射只有一个平台。如何指定Maven必须运行的平台?

Java 为指定平台(Android或iOS)运行自动测试。每次发射只有一个平台。如何指定Maven必须运行的平台?,java,maven,cucumber,automated-tests,appium,Java,Maven,Cucumber,Automated Tests,Appium,爪哇、马文、苹果、黄瓜 项目结构-包: 安卓 ios 特征 测试用例位于包特性-已用特性中 测试运行: 构建jar文件 通过Intellij IDEA 现在特性(Cumber上的测试用例)使用了tag@ios模拟器。通过此标记,Cucumber将查找带有@Before(value=“@ios simulator”)-仅为ios运行测试的类。如果您将功能中的所有标记更改为@android,则将在android下运行测试 问题:为测试运行选择一个平台->更改功能中所有测试用例中的所有标记-这

爪哇、马文、苹果、黄瓜

项目结构-包:

  • 安卓
  • ios
  • 特征
测试用例位于包特性-已用特性中

测试运行:

  • 构建jar文件
  • 通过Intellij IDEA
现在特性(Cumber上的测试用例)使用了tag@ios模拟器。通过此标记,Cucumber将查找带有@Before(value=“@ios simulator”)-仅为ios运行测试的类。如果您将功能中的所有标记更改为@android,则将在android下运行测试

问题:为测试运行选择一个平台->更改功能中所有测试用例中的所有标记-这是一个令人不舒服的常规问题

目标:平台名称必须存储在一个位置,例如在pom.xml文件中。Cucumber或其他东西接受此值并为所选平台运行测试(通过选择适当的包)。或者通过命令:mvn test-Dandroid-如果使用了maven

Cucumber是测试运行的响应。但如何选择更舒适的平台——我不知道。在功能中动态生成标记(从pom.xml文件中获取平台名称值)不起作用


如何通过Maven或Cucumber完成此任务?任何想法

我建议您在测试设置中添加如下内容

device = System.getProperty("device");
这将允许您指定希望通过“iPhone模拟器”或“Android”在何处运行测试

在命令行中,您可以执行以下操作

mvn -Ddevice="Android" test
现在您知道了要在什么类型的设备上运行,并且可以设置要测试的平台。从这里开始,您的测试可能会有某种选择元素或与元素交互的全局方式,并且可以确定使用哪个版本

如果你的应用程序真的是一个混合应用程序,这应该是很好的,否则我会在软件包中为平台保留单独的测试

我正在使用junit并检查测试的包名,以自动执行其他配置

if (this.getClass().getPackage().toString().contains("ios")) {
    platform = iOS;
}

我建议您在测试设置中添加如下内容

device = System.getProperty("device");
这将允许您指定希望通过“iPhone模拟器”或“Android”在何处运行测试

在命令行中,您可以执行以下操作

mvn -Ddevice="Android" test
现在您知道了要在什么类型的设备上运行,并且可以设置要测试的平台。从这里开始,您的测试可能会有某种选择元素或与元素交互的全局方式,并且可以确定使用哪个版本

如果你的应用程序真的是一个混合应用程序,这应该是很好的,否则我会在软件包中为平台保留单独的测试

我正在使用junit并检查测试的包名,以自动执行其他配置

if (this.getClass().getPackage().toString().contains("ios")) {
    platform = iOS;
}