IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tests et Performance Java Discussion :

Tester TCP Serveur avec Mockito [Mockito]


Sujet :

Tests et Performance Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 85
    Points : 69
    Points
    69
    Par défaut Tester TCP Serveur avec Mockito
    Bonjour,

    J'ai une classe de communication TCP et je souhaiterais la tester avec Mockito.
    Auriez vous des idées ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    public TCPCom(Socket socket, Messenger messenger) {
    		this.serverThread = new Thread(this);
    		this.startThread(this.serverThread);
    		this.socket = socket;
    		this.messenger = messenger;
    	}
     
    	/**
             * @return the messenger.
             */
    	public Messenger getMessenger() {
    		return this.messenger;
    	}
     
    	/**
             * @param messenger the messenger to set.
             */
    	public void setMessenger(Messenger messenger) {
    		this.messenger = messenger;
    	}
     
    	/**
             * @return the socket.
             */
    	public Socket getSocket() {
    		return this.socket;
    	}
     
    	/**
             * @param socket the socket to set.
             */
    	public void setSocket(Socket socket) {
    		this.socket = socket;
    	}
     
    	/**
             * Method to start the thread.
             * @param th thread of the class
             */
    	private void startThread(Thread th) {
    		th.start();
    	}
     
    	/**
             * Method to send a command to the client.
             * @param command to send
             */
    	public synchronized void sendCommand(String command) {
    		try {
    			OutputStreamWriter osw = new OutputStreamWriter(this.socket.getOutputStream());
    			this.bufferedOutputReader = new BufferedWriter(osw);
    			this.outToClient = new PrintWriter(this.bufferedOutputReader,true);
    			this.outToClient.println(command);
    			System.out.println("Commande envoye : " + command);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Method to receive an command from the client.
             * @throws IOException throws IOExeption
             */
    	public void receiveCommand() throws IOException {
    		Thread current = Thread.currentThread();
    		InputStream input = this.socket.getInputStream();
    		BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(input));
    		String buffer;
    		try {
    			System.out.println("TCP com is running ...");
    			while (this.serverThread == current) {
    				try {
    					if((buffer = bufferedReader.readLine()) != null) {
    						System.out.println("Commande recu : " + buffer);
    						this.messenger.interpretMessage(buffer);
    					}
    				}catch (IOException e) {
    				}
     
    				try {
    					Thread.sleep(SLEEP_TIME);
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    			}
    		} finally {
    			input.close();
    			this.socket.close();
    		}
    	}
     
    	@Override
    	public void run() {
    		try {
    			this.receiveCommand();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}		
    	}

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    un truc genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ByteArrayOutputStream messages = new ByteArrayOutputStream();
    ByteArrayInputStream demande = new ByteArrayInputStream(donneesSimuleesSousFormeDeByteArray);
    Socket mockSocket = Mockito.mock(Socket.class);
    Mockito.when(mockSocket.getInputStream()).thenReturn(demande);
    Mockito.when(mockSocket.getOutputStream()).thenReturn(messages);
    Bien que personellement je démarrerais une paire de socket client / serveur directement pour tester ce genre de code

  3. #3
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    @tchize_,

    D'après mon expérience (qui est très certainement bien loin d'égaler la tienne), j'ai remarqué que faire des tests unitaires impliquant des composants nécessitant une connexion réseau (cf: communication TCP/IP UDP/IP, donc socket, bdd, http, rest etc) peut s'avérer bien difficile à mettre en place (et ces tests risquent de ne pas toujours fonctionner comme on le voudrait car dépendent de quelque chose dont on n'a pas forcément la main dessus). Je pense qu'il à raison de mocker son Socket.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    bah ça dépend. Si il a le client et le serveur, c'est souvent plus facile de démarrer les deux et voir ce qui se passer. Mocker le socket, ça deviens compliqué quand le serveur comment à jouer avec les options TCPs par exemple. Mais les deux approches se valent. J'ai tendance à partir au plus simple

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Serveur TCP - Chat avec salons
    Par faculto dans le forum Réseau
    Réponses: 4
    Dernier message: 13/03/2018, 23h37
  2. Réponses: 4
    Dernier message: 06/06/2013, 10h34
  3. [Débutant] envoi de message avec un tcp serveur en c#
    Par okolat dans le forum C#
    Réponses: 5
    Dernier message: 07/07/2011, 13h43
  4. [TCP] Client/Serveur avec les composants Indy
    Par bakaneko dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/02/2007, 12h47
  5. Réponses: 1
    Dernier message: 11/05/2006, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo