我需要在多个设备和模拟器上运行黄瓜测试。目前我使用了Jenkins中的多个作业并进行参数化,实现了同时进行测试的目的。但是,在未来有更多设备加入时,我不想在Jenkins中创建无数个作业,所以我并不认为这是最好的方法。
我尝试过使用rake任务,但我发现它是顺序执行而非并行执行。
以下是这两个rake任务:
这似乎仍然是按顺序而非并行执行。
我尝试使用以下代码实现并行测试 gem:
我尝试过使用rake任务,但我发现它是顺序执行而非并行执行。
以下是这两个rake任务:
def run_cucumber(profile)
Cucumber::Rake::Task.new do |t|
t.profile = profile
end
Rake::MultiTask[:cucumber].invoke
end
task 'Device1' do |t|
run_cucumber('MotoZ2Play')
end
task 'Device2' do |t|
run_cucumber('MotoG5Plus')
end
以下是我如何使用多任务
启动并行rake的方法:
multitask 'build_parallel' => ['Device1', 'Device2']
这似乎仍然是按顺序而非并行执行。
我尝试使用以下代码实现并行测试 gem:
Parallel.map([:Device1,:Device2,:Device3,:Device4,:Device5]) {|task| Rake::Task[task].invoke }
但是这似乎在我的cucumber特性文件中执行随机场景,我们希望按照我们编写的顺序执行场景。
我如何实现并行rake任务?
更新:
通过使用Parallel.each
代替Parallel.map
解决了这个问题。
parallel.each([:Device1, :Device2])
而不是parallel.map
,从而根据需要在设备上生成实例。谢谢。已经搞定 :) - Emjey