Nei test di integrazione (JDK 6) sto provando a catturare tutte le connessioni TCP in uscita ea prenderle in giro. Sembra che dovrei usare il metodo java.net.Socket#setSocketImplFactory()
. Funziona bene al momento, ma non riesco a capire come posso ottenere un accesso alla fabbrica originale, al fine di istanziare la classe SocketImpl
fornita da JDK originale. Ho bisogno di questo principalmente perché voglio che lo delle connessioni esca liberamente, senza prendere in giro. Puoi suggerire alcuni manuali/linee guida/istruzioni su questo problema?Come prendere in giro una connessione socket in uscita?
risposta
In base a javadoc, dovresti essere in grado di utilizzare SocketFactory#getDefault() per ottenere SocketFactory predefinito per il tuo ambiente.
BTW: Si potrebbe anche voler guardare a questo RFE/bug che dichiara che SocketImplFactory è fondamentalmente un vicolo cieco: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4245730
Hai ragione, ma sto parlando di 'SocketImplFactory', che genera istanze della classe' SocketImpl'. La classe 'java.net.Socket' non ha nulla a che fare con tutto questo. – yegor256
Guardando il codice sorgente della classe Socket, non v'è alcuna originali di fabbrica - il i costruttori controllano se factory
è nullo e se lo sono, assegnano semplicemente impl
ad un nuovo PlainSocketImpl()
.
Per quanto ho capito non esiste qualcosa come "il codice sorgente della classe Socket". Ogni JDK ha le sue fonti, che possono differire da implementazione a implementazione. – yegor256
Forse è stato ingenuo da parte mia, ma ho pensato che stavi usando Oracle JDK 6, nel qual caso ci sono fonti specifiche da guardare - l'ho fatto e l'ho usato per spiegare che non c'è fabbrica originale da ottenere(). Se sei in grado di farlo, sono d'accordo con @ Peter Lawrey che usare un servizio è il metodo migliore. Ho dovuto fare lo stesso con Runtime.getRuntime(). http://stackoverflow.com/questions/2257901 – Rich
È una libreria di terze parti all'interno della mia applicazione, che utilizza Socket. Non posso cambiarlo comunque. – yegor256
Invece di prendere in giro uno Socket, creerei un servizio Socket per il socket con cui parlare. Questo può acquisire tutti i dati scritti e rispondere in qualsiasi modo desideri. Può essere eseguito nello stesso test e probabilmente nello stesso thread.
- 1. Come prendere in giro una richiesta AJAX?
- 2. come vorrei prendere in giro una querystring
- 3. Come prendere in giro instanceof in Mockito
- 4. Come prendere in giro un attributo mancante
- 5. Come faccio a prendere in giro solo una risposta Alamofire?
- 6. Come posso prendere in giro Assemblare?
- 7. Come prendere in giro un aspetto
- 8. Come prendere in giro una lista autorizzata di bean Spring?
- 9. Come prendere in giro una variabile dao privata?
- 10. Come prendere in giro il valore restituito da una mappa?
- 11. Come prendere in giro una classe interna privata
- 12. Per quale motivo dovrei prendere in giro?
- 13. Prendere in giro una classe concreta usando EasyMock
- 14. Come prendere in giro il contesto del controller con moq
- 15. Come prendere in giro il fuso orario del browser?
- 16. Come faccio a prendere in giro un plugin jQuery?
- 17. Come posso prendere in giro un OracleConnection e OracleCommand?
- 18. Come posso prendere in giro la routine ErrorSignal di Elmah?
- 19. Come posso prendere in giro i metodi della classe @InjectMocks?
- 20. Come prendere in giro uno SharedPreferences utilizzando Mockito
- 21. Come posso prendere in giro gli oggetti Moose?
- 22. Come prendere in giro un SqlDataReader usando Moq - Aggiornamento
- 23. Come prendere in giro la chiamata AJAX con NSURLProtocol?
- 24. Come prendere in giro un costruttore con Mockito
- 25. Come posso prendere in giro questo metodo statico
- 26. mocking una connessione socket in Python
- 27. Come prendere in giro una funzione definita in un modulo di un pacchetto?
- 28. come faccio a prendere in giro una richiesta json post in anello?
- 29. Come posso prendere in giro una richiesta Web esterna in PHPUnit?
- 30. Test unitario in asp.net MVC, come faccio a prendere in giro una richiesta di pagina?
Questa domanda è legata: http://stackoverflow.com/questions/2083647/writing-a-java-net-socketimplfactory – yegor256
Anche in relazione: http://stackoverflow.com/questions/2257901/mock-runtime-getruntime – Rich