そもそもがかなりレアケースなのですが、一応、稀にありえるシチュエーションとしては
- 特別な(微妙な)コードをテストしたい
scala.sys.exit
自体を至る所で呼び出していて、本来それ自体を改善したいが、一旦それをそのままテストしたい- mainスレッドが終わった後に、デーモンではないスレッドが残らないか?みたいな、JVM丸ごと変えないと実質テストが難しいもの
- objectの内部などで
java.lang.System.getProperty
的なグローバルに依存した(初期化の)処理を実行してしまっていて、そこのコード変えないとうまくテストができない(が、コードをすぐに変えられない) - shutdown hook的な処理自体のテストを本物に近い形で行いたい
- 普通にプログラムを書くと依存ライブラリが衝突して困ってるが、ClassLoader使うテクニックもやりたくないのでJVMのプロセスを丸ごとforkして処理を実行したほうが(効率は微妙だが)わかりやすい
などです。タイトルにも書いた細かいポイントとして
続きを読む