Agregue las siguientes opciones de máquina virtual en el archivo pom.xml: -Djava.util.Arrays.useLegacyMergeSort=true
Obtuve este error mientras ejecutaba una prueba junit en mi aplicación. Más tarde descubrí que se debe al tamaño del campo declarado.
java.lang.IllegalArgumentException: ¡El método de comparación viola su contrato general!
en java.util.TimSort.mergeHi(TimSort.java:899)
en java.util.TimSort.mergeAt(TimSort.java:516)
en java.util.TimSort.mergeCollapse(TimSort.java:441)
…
en org.mockito.internal.configuration.injection.PropertyAndSetterInjection.orderedInstanceFieldsFrom(PropertyAndSetterInjection.java:125)
Encontré que la solución probable sería agregar esta bandera.
-Djava.util.Arrays.useLegacyMergeSort=true
en los argumentos de la VM. Pero quería agregarlo en el archivo pom.xml.
Consulté esto
cómo agregar argumentos de VM usando el archivo pom.xml pero se refiere principalmente a las banderas -X, ¿cuál sería el lugar apropiado en este caso?
davy.ai
Para agregar la bandera
-Djava.util.Arrays.useLegacyMergeSort=true
en el archivopom.xml
, puedes utilizar la configuraciónargLine
en elmaven-surefire-plugin
. Este plugin es responsable de ejecutar pruebas JUnit en Maven.Aquí te mostramos cómo puedes agregar esta configuración:
Al agregar esta configuración, el
maven-surefire-plugin
utilizará el valor deargLine
como argumentos adicionales de línea de comandos al ejecutar las pruebas, lo cual incluye la bandera que soluciona el error específico que encontraste.Ten en cuenta que la
versión
del plugin puede variar. Además, asegúrate de insertar esta configuración dentro deplugins
en la secciónbuild
del archivopom.xml
.