Autor Tema: Multiplicar dos numeros con java entrada teclado y test con JUnit assertEquals  (Leído 22932 veces)

Tuplado

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Hola chicos/cas:

Aguién sabe como se puede multiplicar 2 números en java con entrada por teclado
y luego testearlos con JUnit.


Un saludo y gracias de antemano
« Última modificación: 20 de Septiembre 2014, 18:50 por Alex Rodríguez »

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
Re:Multiplica 2 numeros con java
« Respuesta #1 en: 11 de Octubre 2012, 17:25 »
Te digo un posible planteamiento:

lo primero es definir la clase que queremos probar. Yo voy a definir:

public class Multiplicador {

    //No declaramos campos

    public Multiplicador () {
        //Nada que declarar
    }

    public int multiplica (int a, int b) {       return a*b;   }

}


Esta clase simplemente me permite crear un objeto con un método que devuelve el resultado de multiplicar dos números.

Ahora voy a probar con JUnit que el método devuelve el resultado correcto. Para ello creo una clase de test donde se pide al usuario que entre por teclado dos números y se comprueba que el resultado sea correcto:

import java.util.Scanner;
public class MultiplicadorTest extends junit.framework.TestCase {
    private Multiplicador objeto1;

    public void testOperacion(){
        System.out.println ("Por favor introduce el primer número");
        int entradaTeclado1 = 0;
        Scanner sc1 = new Scanner(System.in);
        entradaTeclado1 = Integer.parseInt(sc1.nextLine());
        System.out.println ("Por favor introduce el segundo número");
        int entradaTeclado2 = 0;
        Scanner sc2 = new Scanner(System.in);
        entradaTeclado2 = Integer.parseInt(sc2.nextLine());
        objeto1 = new Multiplicador();
        int resultado;
        resultado = objeto1.multiplica(entradaTeclado1, entradaTeclado2);
        assertEquals (resultado, entradaTeclado1*entradaTeclado2);
    }

}


Al ejecutar el método test JUnit me dice "OK"; si escribiéramos

assertEquals (99, entradaTeclado1*entradaTeclado2);

El resultado que obtendríamos sería junit.framework.AssertionFailedError: expected:<99> but was:<20>, es decir, en este caso no se cumple la aserción que hemos especificado.


Tuplado

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Re:Multiplica 2 numeros con java
« Respuesta #2 en: 13 de Octubre 2012, 20:55 »
Gracia nosferacento.

Me has ayudado un montón, pq estaba más que verde con el framework de JUnit.

Un saludo campeón

Tuplado

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Re:Multiplica 2 numeros con java
« Respuesta #3 en: 13 de Octubre 2012, 21:20 »
Mira nosferacento me surgen dos dudas.

La primera el objeto 1, a que te refieres a  public int multiplica (int a, int b)

La segunda: la declaración    public class Multiplicador no aparece en el archivo JUnit importada.   no se importa como import Multiplicador;


Disculpa por no tener muchos conocimientos todavía en JUnit.

Un saludo grande campeón

nosferacento

  • Moderador Global
  • Avanzado
  • *******
  • Mensajes: 443
    • Ver Perfil
Re:Multiplica 2 numeros con java
« Respuesta #4 en: 14 de Octubre 2012, 21:18 »
El objeto1 es un objeto de una clase que he definido, la clase Multiplicador.

public class Multiplicador {
    //No declaramos campos
    public Multiplicador () {
        //Nada que declarar
    }
    public int multiplica (int a, int b) {       return a*b;   }
}

public int multiplica (int a, int b) {       return a*b;   } Es un método de la clase. Cuando creamos objetos de la clase, estos objetos tienen un método disponible denominado "multiplica" que espera dos enteros y devuelve otro entero. El entero que devuelve es el resultado de multiplicar los dos que recibe.

Entonces lo que yo trato de probar es que este método devuelve el resultado de multiplicar dos enteros, y esto lo pruebo con Junit.

En la clase de Junit no necesito hacer un import de Multiplicador porque esta clase es una clase que estoy utilizando y que tengo en el mismo package. De hecho, la clase que yo estoy probando con JUnit es la clase Multiplicador. Las clases que están situadas en un mismo sitio no necesitan ser importadas, pueden usarse directamente (siempre que tengamos acceso).

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".