Вы делаете это так же, как и любой другой процесс, используя ProcessBuilder .См. здесь , например.
Вы "просто" должны вызвать другой процесс, который запускает вашу команду java, включая все необходимые параметры командной строки и так далее.Сложная часть может быть гарантировать, что второй процесс JVM завершается правильно, когда вы этого хотите.
Помимо этого: вам не следует называть это unit test тогда.«Истинный» модульный тест пытается смоделировать / заглушить любую такую зависимость.С этой точки зрения вы пытаетесь провести функциональный / интеграционный тест.Или, если поменять эту мысль: в модульном тесте вы действительно не должны использовать разные JVM.
Наконец: будьте уверены в том, что вы собираетесь тестировать.Вам не нужно проверять блокировку самой.Это особенность, которую JVM предоставляет для соответствующей операционной системы.Нет смысла проверять, работает ли блокировка.
Вам следует сосредоточиться на модульном тесте, чтобы убедиться, что блокировки получены и сняты, когда вы ожидаете, что это произойдет.Проверка того, что заблокированный файл заблокирован ... не является чем-то, что лежит в пределах вашей ответственности (но наличие функционального теста для этого, просто чтобы убедиться, что вы правильно сделали, тоже не повредит).