从 bash 脚本一个接一个地执行 Java 个 Cucumber 特征文件,并在第一个完成后继续执行特征文件
Executing Java Cucumber feature files one by one from bash script and continue execution of feature files after first one has completed
我需要 运行 一堆 Java 黄瓜功能文件,一个一个地使用 MacOS High Sierra 上的 bash 脚本。我遇到的问题是,一旦第一个特征文件执行完毕(成功或失败),Cucumber 框架就会报告该特征文件,而我的脚本不会执行其余的特征文件。它"returns"到命令行。
这是 运行 将黄瓜文件逐一保存的脚本的一部分:
function run_cucumber_features {
for file in $(find ./src/test -name '*Steps.feature' -print0 | xargs -0);
do gradle cucumberTest -Dcucumber.options="$file" DmutationTesting="false" -DmutationParameter="$parameter";
done
}
例如,假设我执行我的脚本:
./mutation_testing.sh
脚本然后调用 Cucumber 并执行脚本找到的第一个功能,然后 'exits' 带有该特定功能的状态代码:
BUILD Success in 18s
7 actionable tasks: 5 executed, 5 succeeded
但是,它不会继续执行下一个功能文件,它returns到命令行:
username$
我的问题是,是否有一种方法可以让我的脚本在 Cucumber 在每个已执行的功能文件完成报告后不停止执行?
该错误似乎与您的 build.gradle
文件中的步骤或您在 Bash 脚本中调用函数的方式有关。
一个小的测试设置。假设结构如下#!/bin/bash
run-gradle-loop.sh # executable script
gradle # executable script, as simple replacement
src/test/subdir/file2_Steps.feature # a dummy file
src/test/file1_Steps.feature # a dummy file
运行-gradle-loop.sh
#!/bin/bash
function run_cucumber_features {
for file in $(find ./src/test -name '*Steps.feature' -print0 | xargs -0);
do
gradle cucumberTest -Dcucumber.options="$file" DmutationTesting="false" -DmutationParameter="$parameter";
echo "return code = $?"
done
}
# to run the gradle script in the current directory
export PATH=$(pwd):${PATH}
run_cucumber_features
gradle
#!/bin/bash
echo
echo "running gradle dummy"
echo "passed parameters : $@"
# exit with an error code
exit 1
file1_Steps.feature和file2_Steps.feature是两个空文件,只满足循环条件。
测试的目的是检查 gradle
以错误代码退出的行为。
运行 主要 Bash 脚本
./run-gradle-loop.sh
输出
running gradle dummy
passed parameters : cucumberTest -Dcucumber.options=./src/test/subdir/file2_Steps.feature DmutationTesting=false -DmutationParameter=
return code = 1
running gradle dummy
passed parameters : cucumberTest -Dcucumber.options=./src/test/file1_Steps.feature DmutationTesting=false -DmutationParameter=
return code = 1
这表明即使 gradle
也会 return 循环处理所有 .*Steps.feature
文件的错误代码。
edit 它可能会在第一个错误后停止的一种方法是 run-gradle-loop.sh
脚本中有一个 set -e
语句。
man bash
-e Exit immediately if a pipeline (which may consist of a single simple command), a list, or a compound command
这意味着。当脚本 gradle
因错误而失败时,控件不会 return 编辑为 run-gradle-loop.sh
。上述设置的输出将是
$ ./run-gradle-loop.sh
running gradle dummy
passed parameters : cucumberTest -Dcucumber.options=./src/test/subdir/file2_Steps.feature DmutationTesting=false -DmutationParameter=
我需要 运行 一堆 Java 黄瓜功能文件,一个一个地使用 MacOS High Sierra 上的 bash 脚本。我遇到的问题是,一旦第一个特征文件执行完毕(成功或失败),Cucumber 框架就会报告该特征文件,而我的脚本不会执行其余的特征文件。它"returns"到命令行。
这是 运行 将黄瓜文件逐一保存的脚本的一部分:
function run_cucumber_features {
for file in $(find ./src/test -name '*Steps.feature' -print0 | xargs -0);
do gradle cucumberTest -Dcucumber.options="$file" DmutationTesting="false" -DmutationParameter="$parameter";
done
}
例如,假设我执行我的脚本:
./mutation_testing.sh
脚本然后调用 Cucumber 并执行脚本找到的第一个功能,然后 'exits' 带有该特定功能的状态代码:
BUILD Success in 18s
7 actionable tasks: 5 executed, 5 succeeded
但是,它不会继续执行下一个功能文件,它returns到命令行:
username$
我的问题是,是否有一种方法可以让我的脚本在 Cucumber 在每个已执行的功能文件完成报告后不停止执行?
该错误似乎与您的 build.gradle
文件中的步骤或您在 Bash 脚本中调用函数的方式有关。
一个小的测试设置。假设结构如下#!/bin/bash
run-gradle-loop.sh # executable script
gradle # executable script, as simple replacement
src/test/subdir/file2_Steps.feature # a dummy file
src/test/file1_Steps.feature # a dummy file
运行-gradle-loop.sh
#!/bin/bash
function run_cucumber_features {
for file in $(find ./src/test -name '*Steps.feature' -print0 | xargs -0);
do
gradle cucumberTest -Dcucumber.options="$file" DmutationTesting="false" -DmutationParameter="$parameter";
echo "return code = $?"
done
}
# to run the gradle script in the current directory
export PATH=$(pwd):${PATH}
run_cucumber_features
gradle
#!/bin/bash
echo
echo "running gradle dummy"
echo "passed parameters : $@"
# exit with an error code
exit 1
file1_Steps.feature和file2_Steps.feature是两个空文件,只满足循环条件。
测试的目的是检查 gradle
以错误代码退出的行为。
运行 主要 Bash 脚本
./run-gradle-loop.sh
输出
running gradle dummy
passed parameters : cucumberTest -Dcucumber.options=./src/test/subdir/file2_Steps.feature DmutationTesting=false -DmutationParameter=
return code = 1
running gradle dummy
passed parameters : cucumberTest -Dcucumber.options=./src/test/file1_Steps.feature DmutationTesting=false -DmutationParameter=
return code = 1
这表明即使 gradle
也会 return 循环处理所有 .*Steps.feature
文件的错误代码。
edit 它可能会在第一个错误后停止的一种方法是 run-gradle-loop.sh
脚本中有一个 set -e
语句。
man bash
-e Exit immediately if a pipeline (which may consist of a single simple command), a list, or a compound command
这意味着。当脚本 gradle
因错误而失败时,控件不会 return 编辑为 run-gradle-loop.sh
。上述设置的输出将是
$ ./run-gradle-loop.sh
running gradle dummy
passed parameters : cucumberTest -Dcucumber.options=./src/test/subdir/file2_Steps.feature DmutationTesting=false -DmutationParameter=