我有一个在持续集成系统(Atlassian Bamboo 2.5)上运行的webapp构建计划。我需要将基于QUnit的JavaScript单元测试合并到构建计划中,以便在每次构建时都将运行Javascript测试,而Bamboo将解释测试结果。
最好是,我希望能够使构建过程“独立”,从而不需要与外部服务器的连接。如何做到这一点的好主意?运行构建过程的CI系统在Ubuntu Linux服务器上。
当我设法自己提出解决方案时,我认为分享它是一个好主意。该方法可能并非完美无缺,但这是第一个可行的方法。随时发布改进和建议。
简而言之,我做了什么:
接下来,我将经历更详细的阶段。这是我的目录结构最终看起来像的样子:
lib / JsTestDriver.jar test / qunit / equiv.js QUnitAdapter.js jsTestDriver.conf run_js_tests.sh tests.js test-reports / build.xml
在构建服务器上:
apt-get install Xvfb
)apt-get install firefox
)进入要构建的应用程序:
equiv.js
并QUnitAdapter.js
jsTestDriver.conf
):服务器:http:// localhost:4224 load: #加载QUnit适配器(如果不使用QUnit,则可以省略) -qunit / equiv.js -qunit / QUnitAdapter.js #测试自身(您想添加更多文件) -tests.js
创建一个脚本文件以运行单元测试并生成测试结果(例如Bash中的示例run_js_tests.sh
):
#!/bin/bash
# directory to write output XML (if this doesn't exist, the results will not be generated!)
OUTPUT_DIR="../test-reports"
mkdir $OUTPUT_DIR
XVFB=`which Xvfb`
if [ "$?" -eq 1 ];
then
echo "Xvfb not found."
exit 1
fi
FIREFOX=`which firefox`
if [ "$?" -eq 1 ];
then
echo "Firefox not found."
exit 1
fi
$XVFB :99 -ac & # launch virtual framebuffer into the background
PID_XVFB="$!" # take the process ID
export DISPLAY=:99 # set display to use that of the xvfb
# run the tests
java -jar ../lib/JsTestDriver.jar --config jsTestDriver.conf --port 4224 --browser $FIREFOX --tests all --testOutput $OUTPUT_DIR
kill $PID_XVFB # shut down xvfb (firefox will shut down cleanly by JsTestDriver)
echo "Done."
创建一个调用脚本的Ant目标:
<target name="test">
<exec executable="cmd" osfamily="windows">
<!-- This might contain something different in a Windows environment -->
</exec>
<exec executable="/bin/bash" dir="test" osfamily="unix">
<arg value="run_js_tests.sh" />
</exec>
</target>
最后,告诉Bamboo创建计划以调用test
目标并查找JUnit测试结果。在这里默认"**/test-reports/*.xml"
将很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句