Контекст
Я создал собственный бегун Junit для моих конкретных c потребностей (тестирование Java программ, использующих MPI, но здесь это не актуально). Ключевая часть моего раннера состоит в том, чтобы задействовать несколько JVM для запуска тестов. Я делаю это с помощью ProcessBuilder
.
Мой пользовательский бегун отлично работает, что подводит меня к моей проблеме:
Проблема
Я использую Jacoco с Maven для создания отчетов о покрытии тестов. На тестах, использующих обычную среду Junit, это работает нормально. Однако это не тот случай, когда используется мой пользовательский бегун Junit.
Точнее, процесс, в котором запущен мой пользовательский бегун, отслеживается Jacoco (я вижу это на странице «сеансы» отчетов), но JVM, порожденные построителем процессов, - нет.
Некоторые обнадеживающие признаки: Если я вручную добавлю аргумент -javaagent:C:\\Users\\Patrick\\.m2\[...]\org.jacoco.agent-0.8.5-runtime.jar=destfile=C:\\[...]jacoco.exec
в свой построитель процессов, он заработает. Созданные JVM отслеживаются Jacoco, и я вижу, что отслеживаются интересующие меня классы. Но это неудовлетворительно, я не могу сохранить этот жестко запрограммированный аргумент.
Мой вопрос
Есть ли способ получить -javaagent
часть команды изнутри запущенная JVM?
В моем случае я бы поискал потенциальных java агентов, отслеживающих мой пользовательский бегун Junit. Если они есть, я бы перенес их в процессы, которые вызываю с помощью ProcessBuilder
.
Я поискал какие-либо признаки агентов в Properties (System.getProperties()
), но ничего не нашел.
Буду рад предоставить любую дополнительную информацию.