我有一個多項目構建測試在子項目和父項目。構建被彙總,以便父項目運行子項目中的所有測試。如何關閉多項目構建測試的並行執行?
我配置它,以便有在這兩個子項目和父項目的測試並行執行,通過
parallelExecution in Test := false
不過,我也有揮之不去的感覺,是跨越多個項目的測試跑在平行下。在其中一個子項目的情況下,這是一個問題,因爲它同時在測試數據庫中改變狀態,導致測試失敗。
任何想法,如何在全球範圍內的測試並行執行的開關,項目之間?
我有一個多項目構建測試在子項目和父項目。構建被彙總,以便父項目運行子項目中的所有測試。如何關閉多項目構建測試的並行執行?
我配置它,以便有在這兩個子項目和父項目的測試並行執行,通過
parallelExecution in Test := false
不過,我也有揮之不去的感覺,是跨越多個項目的測試跑在平行下。在其中一個子項目的情況下,這是一個問題,因爲它同時在測試數據庫中改變狀態,導致測試失敗。
任何想法,如何在全球範圍內的測試並行執行的開關,項目之間?
我想你可以申請跨應用範圍ThisBuild
項目的設置,像
parallelExecution in ThisBuild := false
我不知道你是否能結合起來,與範圍Test
,但它可能沒有必要。
看到這裏How to run subprojects tests (including setup methods) sequentially when testing
我的回答還有另一種方法,以防止並行執行。您可以進行不同項目的測試任務是互相依賴的:
test in Project2 := (test in Project2).dependsOn(test in Project1).value
parallelExecution in Test in Project2 := false
這對我不起作用:我得到'參考未定義的設置:Project2/*:從Project2/*測試:test(/Users/the21st/Work/Project2/build.sbt:36)您的意思是Project2/web-assets-test:test?' – the21st 2015-07-21 09:34:41
要限制的同時執行測試在所有項目中,使用的數量:
concurrentRestrictions in Global += Tags.limit(Tags.Test, 1)
另一種可能性,是根據https://stackoverflow.com/a/27068019/1922026,是根項目定義一個命令別名:
.settings(addCommandAlias("test", ";s1/test;s2/test;s3/test"): _*)
其中S1,S2和S3的子項目。當您在根項目中並運行「測試」時,測試將按照定義的順序依次執行。
對不起,我還挺新斯卡拉以及所面臨的同樣的問題 - 我應該在哪裏,就把這行?該項目的文件? – kirhgoff 2013-06-21 12:24:49
最簡單的就是把它放到'build.sbt'中(即使你在'project/Build.scala'中有完整的配置文件也可以使用該文件) – 2013-06-21 12:38:52
謝謝!我自己想到了,太急於問而不是思考:)。無論如何,謝謝 – kirhgoff 2013-06-21 17:51:10