我添加了一个suite()
方法来按照我想要的方式对我的测试进行排序,因此当我通过Android JUnit
运行它们时,它们会相应地执行。但后来我注意到,当我使用Spoon执行时,使用cmd的那个,我的测试用例按字母顺序执行,这是默认顺序。
为什么会发生这种情况?如果不重命名我的测试用例,你将如何应对呢?
答案 0 :(得分:2)
jUnit测试的理念是测试用例不应该相互依赖,所以顺序不应该很重要。这就是为什么你发现它很难做到的原因。您可能需要考虑使用“setUp”方法为测试用例创建初始条件,而不是让它们相互构建。
答案 1 :(得分:2)
我和你有同样的问题;我需要一个特定的订单,我的测试需要运行。我正在测试的应用程序太复杂,无法以不可预测的顺序运行。我的解决方案是:
将此添加到您的build.gradle
:
spoon {
if (project.hasProperty('spoonClassName')){
className = project.spoonClassName
}
}
现在,您可以使用如下命令执行特定的类:
gradle spoon -PspoonClassName =< com.your.pakage.ClassName>
接下来,在Android项目的根目录下创建一个文件:runAllTests.sh
修改您的.sh
,如下所示:
#!/bin/sh
date +%b-%dT%H.%M > timestamp.out
sites="$HOME"/path/to/project/root
timestamp="$(cat "$sites"/timestamp.out)"
result_folder="$sites"/results
destdir="$result_folder/Results-$timestamp"
mkdir -p "$destdir"
echo "Directory created: ${destdir##*/}"
<---------- Here you start running the test --------------->
echo "Starting Master Setup"
gradle spoon -PspoonClassName=com.espresso.test.MasterSetup
cp -r "$sites"/app/build/spoon "$destdir"/MasterSetup
echo "Results saved to MasterSetup"
echo "Starting WorkoutSchedule"
gradle spoon -PspoonClassName=com.espresso.test.WorkoutSchedule
cp -f "$sites"/app/build/spoon "$destdir"/WorkoutSchedule
echo "Results saved to WorkoutSchedule"
echo "Starting Setting.test"
gradle spoon -PspoonClassName=com.espresso.test.Settings
cp -r "$sites"/app/build/spoon "$destdir"/Settings
echo "Results saved to Settings"
然后,提供脚本权限
cd
到脚本chmod u+x runAllTest.sh
您已设置。现在只需cd
到您的根目录,然后执行测试,请输入. runAllTest.sh
。
所以,这样做:
result
文件夹(如果它尚不存在)。 Results-SOME-DATE
的结果文件夹中创建一个文件夹。注意:此脚本是为MAC编写的。如果你的窗口或其他任何东西,这个脚本可能需要修改。
此外:您会发现打开每个文件夹以打开index.html
会很不方便。所以我写了这个脚本来添加到你的bash_profile
:
function open-results () {
# the browser to open up `index.html' in.
browser='/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
# let the user know what directory we're looking in
printf "looking in %s" "$(pwd)"
echo ...
for paths in $(find ./ -name 'debug' -type d); do
for files in $(find "$paths" -name 'index.html'); do
open -a "$browser" "$files"
done
done
echo done
}
现在,cd
位于Results-SOME-DATE
的终端,并输入open-results
。再次,这是为终端写的。您可能需要根据您的操作系统进行修改。但结构应该是相同的
我希望这会有所帮助。