https://github.com/lihaoyi/utest
ドキュメントで述べたように、uTest はテストを並行して実行します。1 つのテスト スイート内のテスト ケースを使用すると、連続して実行できます
import utest.ExecutionContext.RunNow
しかし、sbt は異なるテスト スイートを常に並行して実行します。https://github.com/lihaoyi/utest#parallel-testing
これは通常、パフォーマンスには適していますが、オブジェクトやその他の「単一リソース」をテストする場合、問題が発生する可能性があります。同じオブジェクトがテストされたり、複数のテスト スイートで使用されたりすると、これらの並列テストが互いに干渉する可能性があります。
ロギングは良い例です。ロギングは共通のファクトリ オブジェクトを使用する場合があり、場合によっては、このオブジェクトにはデフォルトのロギング レベルやログ インスタンスのデータ構造などの状態が含まれる場合があります。ロギングは複数の SW モジュール / 複数のテスト スイートで使用され、これらのテスト スイートはロギング自体をテストし、他のテスト スイートはロギング テスト スイートでランダムな偽の結果を引き起こす可能性があります。データベースは「単一リソース」のもう 1 つの例です。
どのテスト スイートを常に順番に実行し、どのテスト スイートを並列実行できるかをユーザーが決定できるように、uTest テスト スイートの並列実行を制限する方法はありますか?
例: テスト スイートを実行します。
sbt「スクリプト」は良い解決策ではありません
sbt testOnly com.XXX.yyy.MyTestSuiteA
sbt testOnly com.XXX.yyy.MyTestSuiteB
sbt testOnly com.XXX.yyy.MyTestSuiteC
sbt testOnly com.XXX.yyy.MyTestSuiteD
sbt testOnly com.XXX.yyy.MyTestSuiteE
sbt testOnly com.XXX.yyy.MyTestSuiteF
...
何も並行して実行されず、すべてのテスト スイートをリストする必要があるためです。このようなものが良いかもしれません:
sbt test -- sequentially com.XXX.yyy.MyTestSuiteA, com.XXX.yyy.MyTestSuiteB, com.XXX.yyy.MyTestSuiteC
つまり、残りは並列に実行でき、どのような順序でも実行できます。または
sbt test -- sequentially
つまり、すべてのテスト スイートが順番に実行されます。