我可以 运行 使用一个 maven 命令在多个设备上使用同一个 cucumber 套件吗?
Can I run the same cucumber suite on multiple devices using one maven command?
我有一个 cucumber/appium 框架用于在移动设备上进行测试。现在 cucumber 和 appium 支持并行 运行s,我将其设置为将功能分配给每个连接的设备(junit 仅拆分功能,而不是场景)。我使用 DriverFactory class 实现了这一点。这个 class 很好用,但是在这种情况下,并行 运行 只有在每次都是相同的驱动程序(例如 ChromeDriver)时才真正有用。我的设备在 junit @BeforeClass 方法期间被添加到一个池中,我的 DriverFactory 一个接一个地使用它们直到变空。
我的问题是,虽然速度很快,但有时我想 运行 每个连接设备上的整个套件(仅仅因为测试在一台设备上通过,并不意味着它会在另一台设备上通过其他设备)。
我在想一个包含多个 Maven 命令的批处理文件可能会做到这一点,但是有没有一种方法可以用一个命令完成所有的工作?
我使用 maven-failsafe,因为我不希望 运行 停止失败的测试,我的 pom 设置如下,如果连接了 2 个设备,它将跨设备拆分功能
我有一个黄瓜 运行ner class。我没看过詹金斯。我首先希望看看我是否可以从我的 mac 考虑到我已经在每个功能的基础上工作了。
这是我相关的 maven-failsafe 代码。我可以为已连接的许多设备更新 threadCount(考虑动态执行此操作)。我尝试使用套件而不是方法,但它 运行 整个套件只在一台设备上
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<includes>
<include>**/RunCucumberTest.java</include>
</includes>
<parallel>methods</parallel>
<threadCount>2</threadCount>
<perCoreThreadCount>false</perCoreThreadCount>
</configuration>
</execution>
</executions>
如有任何帮助,我们将不胜感激。如果您需要了解任何信息,请告诉我,或者如果我的代码有任何帮助,我可以 post 在这里
是的,你可以。为此,您需要有 N 的 WebDriver 实现与下面的多个平台成比例 -
- 对于iOS平台-> IOSDriver
- 对于 Android 平台 -> Android驱动程序
- 对于 Web 平台 -> WebDriver
此外,您还需要编写 Thread-Safe 代码来保证多个线程同时安全执行。此外,您应避免使用静态变量和方法。
对我自己的问题的迟到回应,但我正在使用以下设置根据我连接的设备数量使用个人 运行ner class。我使用此 plugin 获取设备数量,然后对每个设备使用 运行ner。不是开发人员,所以请加一点盐。它有效,但不确定是否有效:-)
@RunWith(AllTests.class)
public class ClassRunnerTest {
public static TestSuite suite() {
int numberOfDevices;
try {
DeviceInfo deviceInfo = new DeviceInfoImpl(DeviceType.ALL);
List<Device> devices = deviceInfo.getDevices();
numberOfDevices = devices.size();
} catch (IOException e) {
throw new Exception();
} catch (DeviceNotFoundException e) {
throw new Exception();
}
TestSuite suite = new ActiveTestSuite();
for (int i = 0; i < numberOfDevices; i++) {
suite.addTest(new JUnit4TestAdapter(RunCucumberTest.class));
}
return suite;
}
}
RunCucumberTest class 是一个 Cucumber class。这样做的副作用是,在使用此方法时,某些黄瓜插件似乎无法使用(例如,cluecumber 仅报告一个 class,但尚未深入研究原因),但除此之外似乎到目前为止工作。
有时我想 运行 分布式测试而不是碎片化,所以考虑轻松地进行切换。也许是黄瓜插件。
我有一个 cucumber/appium 框架用于在移动设备上进行测试。现在 cucumber 和 appium 支持并行 运行s,我将其设置为将功能分配给每个连接的设备(junit 仅拆分功能,而不是场景)。我使用 DriverFactory class 实现了这一点。这个 class 很好用,但是在这种情况下,并行 运行 只有在每次都是相同的驱动程序(例如 ChromeDriver)时才真正有用。我的设备在 junit @BeforeClass 方法期间被添加到一个池中,我的 DriverFactory 一个接一个地使用它们直到变空。
我的问题是,虽然速度很快,但有时我想 运行 每个连接设备上的整个套件(仅仅因为测试在一台设备上通过,并不意味着它会在另一台设备上通过其他设备)。
我在想一个包含多个 Maven 命令的批处理文件可能会做到这一点,但是有没有一种方法可以用一个命令完成所有的工作?
我使用 maven-failsafe,因为我不希望 运行 停止失败的测试,我的 pom 设置如下,如果连接了 2 个设备,它将跨设备拆分功能
我有一个黄瓜 运行ner class。我没看过詹金斯。我首先希望看看我是否可以从我的 mac 考虑到我已经在每个功能的基础上工作了。
这是我相关的 maven-failsafe 代码。我可以为已连接的许多设备更新 threadCount(考虑动态执行此操作)。我尝试使用套件而不是方法,但它 运行 整个套件只在一台设备上
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<includes>
<include>**/RunCucumberTest.java</include>
</includes>
<parallel>methods</parallel>
<threadCount>2</threadCount>
<perCoreThreadCount>false</perCoreThreadCount>
</configuration>
</execution>
</executions>
如有任何帮助,我们将不胜感激。如果您需要了解任何信息,请告诉我,或者如果我的代码有任何帮助,我可以 post 在这里
是的,你可以。为此,您需要有 N 的 WebDriver 实现与下面的多个平台成比例 -
- 对于iOS平台-> IOSDriver
- 对于 Android 平台 -> Android驱动程序
- 对于 Web 平台 -> WebDriver
此外,您还需要编写 Thread-Safe 代码来保证多个线程同时安全执行。此外,您应避免使用静态变量和方法。
对我自己的问题的迟到回应,但我正在使用以下设置根据我连接的设备数量使用个人 运行ner class。我使用此 plugin 获取设备数量,然后对每个设备使用 运行ner。不是开发人员,所以请加一点盐。它有效,但不确定是否有效:-)
@RunWith(AllTests.class)
public class ClassRunnerTest {
public static TestSuite suite() {
int numberOfDevices;
try {
DeviceInfo deviceInfo = new DeviceInfoImpl(DeviceType.ALL);
List<Device> devices = deviceInfo.getDevices();
numberOfDevices = devices.size();
} catch (IOException e) {
throw new Exception();
} catch (DeviceNotFoundException e) {
throw new Exception();
}
TestSuite suite = new ActiveTestSuite();
for (int i = 0; i < numberOfDevices; i++) {
suite.addTest(new JUnit4TestAdapter(RunCucumberTest.class));
}
return suite;
}
}
RunCucumberTest class 是一个 Cucumber class。这样做的副作用是,在使用此方法时,某些黄瓜插件似乎无法使用(例如,cluecumber 仅报告一个 class,但尚未深入研究原因),但除此之外似乎到目前为止工作。
有时我想 运行 分布式测试而不是碎片化,所以考虑轻松地进行切换。也许是黄瓜插件。