Cómo simular la falta de conectividad de red en las pruebas unitarias

La pregunta general es cómo simular (como parte de unJUnit conjunto de casos de prueba) falta de conectividad de red ya que esta es una consideración importante en algunos casos de prueba. ¿Hay alguna manera de hacerlo a través de una API Java (o mediante una opción JVM) para que ciertos casos de prueba se puedan ejecutar con la desconexión de red? (¿simulado o real?)

El caso más específico (si no hay una solución generalmente aplicable) es que estoy haciendo un montón de procesamiento de archivos XML (incluida la validación XSD) y necesito asegurarme de que no se obtenga nada en la red, específicamente, que elxsi:schemaLocation Los valores de los atributos (sugerencias) no se utilizan y todos los XSD se obtienen realmente de la ruta de clase. Estoy usando unValidador con una costumbreLSResourceResolver que carga cualquier XSD que pueda ser necesario desde el classpath.

Creo que podría implementar elresolveResource método de laLSResourceResolver para no volver nuncanull (y, por lo tanto, para no recurrir nunca al comportamiento predeterminado de abrir una conexión de URI regular al recurso), pero no estoy seguro de si eso sería suficiente y, en cualquier caso, me sentiría más seguro si pudiera ejecutar miJUnit pruebas en un modo de isla simulada (sin bajar manualmente las interfaces en mi máquina).

ACTUALIZAR

La respuesta aceptada, es decir, la-DsocksProxyHost enfoque proporcionó exactamente la solución que necesitaba como elTarea JUnit puede aceptar parámetros de VM (sifork se establece entrue) y así puedo tener lo siguiente en mi archivo Ant:

<junit printsummary="true" showoutput="true" fork="true" maxmemory="256m">
    <jvmarg value="-DsocksProxyHost=127.0.0.1"/>
    ...

... envuelto dentrocontrib:if para poder controlar desde la línea de comandos si ejecutar pruebas JUnit en condiciones de conectividad de red o no.

Respuestas a la pregunta(2)

Su respuesta a la pregunta