3

「今」をシミュレートする必要がある時間依存の単体テストがあります。私は JodaTime を使用し、時間依存のテストの目的で now の値をシミュレートする必要がある場合は、DateTimeUtils.setCurrentMillisFixed(...) を使用します

ただし、これにより、単体テストを並行して実行するときに問題が発生するようになりました。適切な解決策は、すべてのクラスが、テストでモックアウトできる Clock 依存関係から現在の時刻を取得するようにすることです ( Time dependent unit testsの最も支持された回答で示唆されているように)。ただし、現時点では、そのリファクタリング作業を行うための十分な開発リソースがありません。

私の質問は、並行して実行できるテストと実行できないテストを何らかの方法で指定することで、これを回避する方法はありますか? DateTimeUtils.setCurrentMillisProvider() を使用してこれを回避する方法はありますか?

テスト フレームワークは JUnit4 で、テストは Maven から実行されます。

4

3 に答える 3

2

これらのParallelism Tipsで提案されているように、CurrentMillisProvider「現在」を a に格納する a を実装して設定します。ThreadLocal<Long>

PS Joda Time には、ライブラリで使用される現在の時刻を変更できるDateTimeUtilsがあります。これはグローバル変数ですが、サポートされた実装で呼び出すDateTimeUtils.setCurrentMillisProviderと、ThreadLocalJoda Time を使用するレガシー コードをテストするときに合理的に分離されます。

于 2013-09-06T16:16:26.757 に答える