JUnit [ 7 ] es un framework simple, bien diseñado,de prueba para JAVA. La configuración de JUnit se muestra como un diagrama de la clase de UML class en el Cuadro 2 [1].Cada rectángulo representa una clase (class). La sección superior lleva su nombre y en la parte inferior sus métodos. Cada relación entre estas clases es representado por las barras que las conectan. La barra de flechas que conecta las clases de TestCasey Test Classes indica que "es una" relación, siguiendo la dirección de la flecha; así, la clase de TestCase heredade la Test Class. La barra que conecta entre las clases de TestResult yde TestCase indica una " asociación, " es decir las llamadas de una clase los otros métodos. La línea que señala una punta de diamante indica que " tiene una " relación, donde la clase más cerca a la punta de diamante es la única que tiene la otra; en este ejemplo, la clase de TestSuite tiene un ejemplo o caso de una de las clases derivadas de Test Class (las clases TestSuite y TestCase).
Se proporciona el framework con un " cookbook " o libro de recetas ,que describe gradualmente, el proceso de "instantiación". Por ejemplo, este framework puede ser instantiado poniendo la clase de TestCase en ejecución.El método del run(), heredado de la clase Test ejecutará una prueba de un caso ejecutando el setUp(), el runTest(), y el tearDown() en secuencia. Explicaremos el papel de estos métodos cuidadosamente. El método del runTest() lleva a cabo llamadas de la función API (Application Program Interface), el método del llamado, y otro código a probar. El framework de JUnit también proporciona la infraestructura para ejecutar dos o más pruebas en conjuntos similares o idénticos de objetos. Esto se llama base de la prueba,y es posible con los métodos del setUp() y del tearDown(). El método del setUp() inicializa las variables del objeto.
Correspondientemente,el método del tearDown() borra los recursos asignados por el setUp().Cada vez que se llama al método del run(), se ejecuta el métododel setUp() que configura el escenario de prueba, la prueba es ejecutada, entonces tearDown() destruye el escenario creado. El generador de la aplicación "instantializa" el framework a través de la clase myTestCase, el cual subsecuentemente, "instantializa" los métodos discutidos anteriormente más arriba.
Las cajas de la prueba se pueden también agrupar en compartimientos de prueba (TestSuite). Un compartimiento de prueba determinado puede contener varios casos de prueba o varios compartimientos de prueba. Cuando el método del run() sea invocado para un compartimiento de prueba, todos sus pruebas son ejecutados recurrentemente. Los resultados de las pruebas se recogen en las clases de TestResult, que contienen los detalles de las pruebas falladas. Se agrupan usando patrones de diseño compuesto[5].
Los puntos calientes de este framework son el código de prueba, la construcción del escenario de la prueba, y el código de destrucción. Todos estos son implementados por los métodos descritos arriba. Incluso más, este framework tiene una interfaz muy clara y definida, donde la prueba de clase abstracta, es extendida por el TestCase y el TestSuite.