我在使用生成的Makefiles的NetBeans中有一個C++項目。我在Jenkins(持續集成服務器)中創建了一個工作來運行在NetBeans中配置的測試。現在Jenkins運行測試並捕獲它們的輸出,但即使測試失敗,它也認爲構建成功。NetBeans生成的Makefile忽略測試返回代碼
我正在使用Boost單元測試框架,當然任何正確的* nix程序都會返回一個非零代碼。所以我想知道爲什麼Jenkins在測試失敗時不明白。然後我發現這個通過NetBeans生成的Makefile-Debug.mk:
# Run Test Targets
.test-conf:
@if [ "${TEST}" = "" ]; \
then \
${TESTDIR}/TestFiles/f1 || true; \
${TESTDIR}/TestFiles/f2 || true; \
else \
./${TEST} || true; \
fi
所以好像他們故意忽略所有測試的返回值。但是這沒有意義,因爲那麼你的測試測試是什麼?
我試圖在NetBeans中找到一個設置來說「讓失敗的測試破壞構建」,但沒有找到任何東西。我也嘗試在NetBeans跟蹤器中找到一個bug,但在我的簡短搜索中沒有看到任何錯誤。
有沒有其他合理的解決辦法?如果有任何測試失敗,我想讓詹金斯失敗。現在只有在測試失敗時纔會失敗build,但是如果它建立並且未能通過運行,則報告成功。
我在NetBeans生成的'nbproject/Makefile-Debug.mk'中看不到這段代碼。在我的系統上沒有關於在這個文件中測試的內容。你是如何得到這個測試規則的? (我在沒有Java EE和服務器的NetBeans 8.0上 - 可能是這個原因嗎?) – HEKTO
我正在使用NetBeans 8.0 for C++。我剛剛測試過創建一個新的C++應用程序,然後添加一個新的C++簡單測試。我用'throw;'替換了main()的底部的'return(EXIT_SUCCESS);'。當我運行測試時,儘管main()返回非零值,並且stderr顯示'Aborted(core dumped)',但NetBeans報告它仍然成功(!)。很明顯,NetBeans測試結果報告通過在標準輸出中對'%TEST_FAILED%'(它顯示在默認生成的C++簡單測試代碼中)中的魔術字符串進行刷新,並忽略返回值。這令人震驚。 –
它看起來像這個「簡單測試」只是一個模板,而不是一個真實的東西。我找到了相當長的教程頁面:https://netbeans.org/kb/docs/cnd/c-unit-test.html。他們說你需要添加「CUnit」測試框架。仍然沒有關於Jenkins的消息...... – HEKTO