2012-01-05 39 views
83

Tengo una clase de Java que hace una suma binaria, todavía estoy tratando de averiguar cómo hacer las pruebas de unidad, pero no sé cómo hacerlo. He buscado en Google y la mejor explicación que tuve fue la página de Wikipedia: http://en.wikipedia.org/wiki/Unit_testing¿Cómo escribir una prueba unitaria?

pero todavía no estoy seguro de cómo hacer mi prueba para este programa. Lo que el programa hace es básicamente tomar 2 bytes [] y agregarlos y devolver la nueva matriz binaria. Escrito en Java. ¿Cómo puedo probarlo?

+4

Puede utilizar una herramienta como [jUnit] (http://www.junit.org/) y escribir casos de prueba (métodos de prueba) para su clase java. Luego invoque las pruebas jUnit como parte del proceso de compilación (ant/maven). Usar jUnit no es nada difícil, la parte más difícil es encontrar tantos escenarios de prueba que se te ocurran para que puedas detectar los errores de manera temprana y frecuente. – CoolBeans

Respuesta

94
  1. Define la salida esperada y deseada para una carcasa normal, con la entrada correcta.

  2. Ahora, poner en práctica la prueba por la que se declara una clase, el nombre de cualquier cosa (Por lo general, algo así como TestAddingModule), y añadir el método testAdd a ella (es decir, como la de abajo):

    • escribir un método, y encima agrega la anotación @Test.
    • En el método, ejecute su suma binaria y assertEquals(expectedVal,calculatedVal).
    • Pruebe su método ejecutándolo (en Eclipse, haga clic con el botón secundario, seleccione Ejecutar como → Prueba JUnit).

      //for normal addition 
      @Test 
      public void testAdd1Plus1() 
      { 
          int x = 1 ; int y = 1; 
          assertEquals(2, myClass.add(x,y)); 
      } 
      
  3. añadir otros casos si lo deseas.

    • Compruebe que su suma binaria no arroja una excepción inesperada si hay un desbordamiento de enteros.
    • Pruebe que su método maneje correctamente las entradas nulas (ejemplo a continuación).

      //if you are using 0 as default for null, make sure your class works in that case. 
      @Test 
      public void testAdd1Plus1() 
      { 
          int y = 1; 
          assertEquals(0, myClass.add(null,y)); 
      } 
      
+0

1. ¿se requiere la notación @Test? 2. ¿por qué no prueba la entrada nula con assertNotNull? 3. ¿Dónde se capturan los resultados de las pruebas unitarias? ¿Cómo se indican los resultados al usuario? – user137717

+7

Sí, se requiere la notación '@ Test '. Esto se hace para indicar al corredor de pruebas unitario que este método representa una prueba unitaria y debe ejecutarse. Los métodos que no están anotados con '@ Test' no son ejecutados por el corredor de prueba. –

12

Ésta es una pregunta muy genérica y hay una gran cantidad de formas en que puede ser contestada.

Si desea usar JUnit para crear las pruebas, debe crear su clase testcase y luego crear métodos de prueba individuales que prueben la funcionalidad específica de su clase/módulo bajo prueba (las clases individuales de testcase generalmente están asociadas a un único " "clase de producción que se está probando) y dentro de estos métodos ejecuta varias operaciones y compara los resultados con lo que sería correcto. Es especialmente importante tratar de cubrir tantos casos de esquina como sea posible.

En el ejemplo específico, se podría, por ejemplo, comprobar lo siguiente:

  1. Una simple adición entre dos números positivos. Añádalos, luego verifique que el resultado sea el esperado.
  2. Una adición entre un número positivo y un número negativo (que devuelve un resultado con el signo del primer argumento).
  3. Una suma entre un número positivo y un número negativo (que devuelve un resultado con el signo del segundo argumento).
  4. Una suma entre dos números negativos.
  5. Una adición que provoca un desbordamiento.

Para comprobar los resultados, puede utilizar varios métodos assertXXX de la clase org.junit.Assert (por conveniencia, se puede hacer 'importación org.junit.Assert estática. *'). Estos métodos prueban una condición particular y fallan la prueba si no valida (con un mensaje específico, opcionalmente).

Ejemplo clase caso_prueba en su caso (sin el contenido métodos definidos):

import static org.junit.Assert.*; 

public class AdditionTests { 
    @Test 
    public void testSimpleAddition() { ... } 


    @Test 
    public void testPositiveNegativeAddition() { ... } 


    @Test 
    public void testNegativePositiveAddition() { ... } 


    @Test 
    public void testNegativeAddition() { ... } 


    @Test 
    public void testOverflow() { ... } 
} 

Si usted no está acostumbrado a escribir las pruebas unitarias, sino probar el código escribiendo las pruebas ad-hoc que valide " visualmente "(por ejemplo, usted escribe un método principal simple que acepta los argumentos ingresados ​​con el teclado y luego imprime los resultados, y luego sigue ingresando valores y validandose si los resultados son correctos), luego puede comenzar escribiendo tales pruebas en el formato anterior y validar los resultados con el método assertXXX correcto en lugar de hacerlo manualmente. De esta forma, puede volver a ejecutar la prueba mucho más fácilmente que si tuviera que hacer pruebas manuales.

6

Al igual que @CoolBeans mencionado, eche un vistazo a jUnit. Aquí está un breve tutorial para que comience también con jUnit 4.x

Finalmente, si realmente desea obtener más información sobre las pruebas y el desarrollo basado en pruebas (TDD), le recomiendo que eche un vistazo al siguiente libro de Kent Beck: Test-Driven Development By Example.

42

Para hacer prueba de la unidad para su proyecto, siga estos pasos (que estoy usando Eclipse para escribir este ensayo):

1- Haga clic en Nuevo -> Proyecto de Java.

Create Project

2- nota de su nombre de proyecto y haga clic en Finalizar.

Create Project

3- Escribir clic en su proyecto. Luego, haz clic en Nuevo -> Clase.

Create Class

4- nota de su nombre de la clase y haga clic en Finalizar.

Create Class

A continuación, complete la clase como esta:

public class Math { 
    int a, b; 
    Math(int a, int b) { 
     this.a = a; 
     this.b = b; 
    } 
    public int add() { 
     return a + b; 
    } 
} 

5- Haga clic en Archivo -> Nuevo -> JUnit Test Case.

Create JUnite Test

6- verificación de la configuración() y haga clic en Finalizar. SetUp() será el lugar donde inicialice su prueba.

Check SetUp()

7- Haga clic en OK.

Add JUnit

8- Aquí, simplemente añadir 7 y 10. Por lo tanto, espero que la respuesta sea 17.Completar su clase de prueba como esta:

import org.junit.Assert; 
import org.junit.Before; 
import org.junit.Test; 
public class MathTest { 
    Math math; 
    @Before 
    public void setUp() throws Exception { 
     math = new Math(7, 10); 
    } 
    @Test 
    public void testAdd() { 
     Assert.assertEquals(17, math.add()); 
    } 
} 

9- Escribir clic en su clase de prueba en el explorador de paquete y haga clic en Ejecutar como -> JUnit Test.

Run JUnit Test

10- Este es el resultado de la prueba.

Result of The Test

espero que ayude.

+0

¡Amo su respuesta, es el mejor "cómo hacerlo"! – alisa

+0

Me alegra que mi respuesta haya sido útil. Gracias por tu comentario. – Mohammad

0
public class FirtJunit { 

    @BeforeClass 
    public static void startUp() { 
     System.out.println("BeforeClass"); 
    } 
    @AfterClass 
    public static void shutDown() { 
     System.out.println("AfterClass"); 
    } 
    @Before 
    public void setup() { 
     System.out.println("Before"); 
    } 
    @After 
    public void tearDown() { 
     System.out.println("After"); 
    } 
    @Test 
    public void mul() { 
     System.out.println("Test for mul"); 
    } 
    @Test 
    public void div() { 
     System.out.println("Test for div"); 
    } 




} 
Cuestiones relacionadas