如果有時只有失敗的測試,我可以請求sbt持續運行測試,直到失敗?如何進行持續的測試直到flakey測試失敗?
否則,我被卡住的箭頭一邊看着箭頭。 (雙關語意外,但膨鬆)
https://stackoverflow.com/q/22366719/1296806
如果有時只有失敗的測試,我可以請求sbt持續運行測試,直到失敗?如何進行持續的測試直到flakey測試失敗?
否則,我被卡住的箭頭一邊看着箭頭。 (雙關語意外,但膨鬆)
https://stackoverflow.com/q/22366719/1296806
老問題,但剛剛有同樣的需要我自己,這裏是一個解決方案:sbt將返回非零退出代碼,如果你運行一次與測試,所以,一種方式來循環,直到失敗是隻需看看外殼中的退出代碼:
while [ $? -eq 0 ]; do sbt test; done
沒有人會對綠色小氣。 –
我在{1..100}中爲'i做了類似的事情;這樣可以很好的不會每次加載SBT,因爲這佔用了大部分時間,這可以通過使用Ammonite- REPL而不是SBT – einnocent
我的一個班輪:'i = 0; while sbt siteService/test; do echo -e「Count:$ i \ n \ n \ n \ n \ n \ n」; i = $((i + 1) ); sleep 0.2; done; echo $ i' –
在我看來,它並不特別適用於SBT或任何其他構建管理工具。這沒有內置的SBT功能。你必須建立一個,但它遠不如SBT所提供的 - 建立配置管理。造成構建/測試失敗的情況可能需要相當長的時間。這是非常不可預測的。
當您的測試失敗時,這意味着有些情況下測試未通過。錯誤應該告訴你你用什麼來改進測試。
我沒有downvote爭議的建議,sbt不是像'〜compile'這樣的交互式工具,直到我得到正確的語法爲止。在這裏,我要求'〜測試'直到片狀測試失敗。 –
我遇到了同樣的問題,並且我最終將其作爲命令實現。
lazy val root = Project("test", file(".")).
settings(commands += Command.command("testUntilFailed") { state =>
"test" :: "testUntilFailed" :: state
})
好處是它會跳過SBT加載。您還可以添加額外的參數或運行testOnly
來測試單個測試。
這應該是公認的答案!運行速度更快 –
@SaadMalik綠色檢查意味着「解決了我的問題」 Upvotes意味着很好的答案。大多數上漲意味着總體上最好的答案。 –
我爲片狀測試檢測創建了sbt插件:sbt-flaky。您可以運行測試:
sbt clean "flaky duration=30"
,sbt clean "flaky times=30"
sbt clean "flaky firstFail"
。這個插件的優點是故障的彙總,歷史趨勢和在管道中添加片狀測試檢測的可能性。
我可以想到的唯一方法,標記你想要的測試並在這個標籤 – 4lex1v
上運行'〜testOnly'也許你可以在sbt中定義自己的任務/命令,循環並調用testOnly任務,直到失敗? – johanandren
將需要一個命令(不是任務),我相信 –