Ant 1.10.4 поддерживает JUnit 5. Однако он не поддерживает все функции, которые обеспечивает интеграция Ant в JUnit 4. В частности, он не поддерживает разветвление процесса junit и, следовательно, передачу системных свойств.
Я нашел этот вопрос, потому что пытался сделать то же самое. Я нашел обходной путь, хотя. Вы можете установить системные свойства в коде перед вызовом junitlauncher.
Этот код - то, что я использовал, чтобы установить единственное системное свойство для кодирования файла. Вы могли бы сделать что-то подобное для ваших свойств.
<script language="javascript">
<![CDATA[
var imports = new JavaImporter(java.lang.System);
imports.System.setProperty('file.encoding', 'ISO8859_1')
]]>
</script>
У вас немного сложнее, так как ваши свойства используют другие. Вы можете прочитать переменную Ant из кода. (Я не знаю, как читать одно с точкой в имени, поэтому я избавился от точки в этом примере)
<property name="cloverdbdir" value="clover-dir-property-value" />
<property name="cloverdbfile" value="clover-db-file-property-value" />
<script language="javascript">
<![CDATA[
var imports = new JavaImporter(java.lang.System);
imports.System.setProperty('clover.initstring', cloverdbdir + '/' + cloverdbfile);
print(imports.System.getProperty('clover.initstring'));
]]>
</script>
Есть несколько вещей, о которых следует знать, если вы используете эту технику:
- Нашорн устарел для удаления. Это определенно в Java 11. Однако, это не гарантировано для всех будущих версий. Вполне вероятно, что Ant к тому времени добавит функциональность системных свойств, поэтому я не беспокоюсь об этом.
- Системное свойство остается установленным до конца сборки. Это не выглядит проблемой для вас. Если это так, вам понадобится другой блок скрипта после вызова JUnit, чтобы обнулить его.