• No se han encontrado resultados

Pruebas de Software: Junit. Departamento de Sistemas y Computación Facultad de Ingeniería Universidad de los Andes

N/A
N/A
Protected

Academic year: 2021

Share "Pruebas de Software: Junit. Departamento de Sistemas y Computación Facultad de Ingeniería Universidad de los Andes"

Copied!
14
0
0

Texto completo

(1)

Pruebas de Software: Junit

Departamento de Sistemas y

Computación

Facultad de Ingeniería

Universidad de los Andes

(2)

Qué es Junit?

 Es un framework de pruebas para Java, utilizado para escribir y ejecutar pruebas repetibles.

 Es una instancia de la arquitectura xUnit para frameworks de pruebas unitarias.

 Es de código abierto, creado porErich Gamma –GoF, Kent Beck

 Inicialmente utilizado para eXtreme

(3)

Características

 Aserciones para probar resultar esperados

 Formas para compartir información de pruebas

 Suites de pruebas para organizar y ejecutar pruebas fácilmente

 Programa que ejecuta las pruebas de

manera gráfica y textual

(4)

Objetivos

 Ejecutar pruebas de manera automática

 Evitar el problema de tener que ejecutar pruebas una por una, de manera manual con posibilidad de errores.

 Sencillo

 Proveer solamente la funcionalidad que requiere una persona para hacer pruebas

 Se debe aprender poco para poder escribir una

prueba

(5)

Objetivos (cont.)

 Crear pruebas que retienen su valor agregado a través del tiempo

 Capacidad de repetir una prueba bajo las mismas condiciones

 Si hago cambios sobre el software, lo demás debe mantenerse funcionando

 Provee una forma de hacer pruebas de regresión

 Se pueden agrupar conjuntos de pruebas de

distintas personas sin problemas, debido al

carácter uniforme que provee

(6)

Objetivos (cont.)

 Crear pruebas para cada parte del software

 La idea es crear las pruebas al comienzo del desarrollo y no después

 Es como crear las pruebas a partir de las clases que no contienen implementación y a medida que se desarrolla software ir probando

 Un cambio significa ejecutar las pruebas

anteriores y las nuevas

(7)

Conceptos Básicos

 Cada clase de prueba contiene métodos para probar los métodos de una clase particular:

 Cada método de prueba debe tener la

anotación@Test

(8)

Conceptos Básicos

BookLogic

BookDTO getBook(Long id)

BookDTO createBook(

BookDTO dto)

BookLogicTest

@Test

void createBookTest()

@Test

void getBookTest()

@Test

Public void createBookTest() {

BookDTO result = bookLogic.createBook(dto);

… }

bookLogic

(9)

Conceptos Básicos

BookLogic

BookDTO getBook(Long id)

BookDTO createBook(

BookDTO dto)

BookLogicTest

@Test

void createBookTest()

@Test

void getBookTest()

@Test

Public void createBookTest() {

BookDTO result = bookLogic.createBook(dto);

… }

bookLogic

@Inject

private IBookLogic bookLogic;

(10)

Conceptos Básicos

BookLogic

BookDTO getBook(Long id)

BookDTO createBook(

BookDTO dto)

BookLogicTest

@Test

void createBookTest()

@Test

void getBookTest()

@Test

Public void createBookTest() {

PodamFactory factory = new PodamFactoryImpl();

BookDTO dto = factory.manufacturePojo(BookDTO.class);

BookDTO result = bookLogic.createBook(dto);

bookLogic

@Inject

private IBookLogic bookLogic;

Se crea un objeto con datos

aleatorios

utilizando Podam

(11)

Conceptos Básicos

BookLogic

BookDTO getBook(Long id)

BookDTO createBook(

BookDTO dto)

BookLogicTest

@Test

void createBookTest()

@Test

void getBookTest()

@Test

Public void createBookTest() {

PodamFactory factory = new PodamFactoryImpl();

BookDTO dto = factory.manufacturePojo(BookDTO.class);

BookDTO result = bookLogic.createBook(dto);

Assert.assertNotNull(result);

BookEntity entity = em.find(BookEntity.class, result.getId());

Assert.assertEquals(dto.getName(), entity.getName());

Assert.assertEquals(dto.getIsbn(), entity.getIsbn());

bookLogic

@Inject

private IBookLogic bookLogic;

Se crea un objeto con datos

aleatorios

utilizando Podam

Se consulta la

BD utilizando un

manejador de

persistencia

Se compara lo

que se creó con

(12)

Conceptos Básicos

BookPersistence

BookEntity getBook(BookEntity e)

BookEntity createBook(BookEntity e)

BookPersistenceTest

@Test

void createBookTest()

@Test

void getBookTest()

@Test

public void createBookTest() {

PodamFactory factory = new PodamFactoryImpl();

BookEntity newEntity = BookConverter.basicDTO2Entity(

factory.manufacturePojo(BookDTO.class));

BookEntity result = bookPersistence.create(newEntity);

Assert.assertNotNull(result);

bookPersistence

@Inject

private BookPersistence bookPersistence;

Se crea un objeto con datos aleatorios utilizando Podam

Se consulta la BD

utilizando un

manejador de

persistencia

(13)

Fixtures (Ambientes de prueba)

@BeforeClass

@AfterClass

@Before

@After test1

@Before

@After testk

@Before

@After testn

(14)

Fixtures (Ambientes de prueba)

@BeforeClass

@Before

@After test1

@Before

@After testk

@Before

@After testn

@Inject

UserTransaction utx;

@Before

public void configTest() { try {

utx.begin();

clearData();

insertData();

utx.commit();

} catch (Exception e) { e.printStackTrace();

try {

utx.rollback();

} catch (Exception e1) {

e1.printStackTrace();

} } }

private void clearData() { em.createQuery("delete from

BookEntity").executeUpdate();

}

private void insertData() {

for (int i = 0; i < 3; i++) {

PodamFactory factory = new PodamFactoryImpl();

BookEntity entity =

Referencias

Documento similar

La técnica de referencia para su diagnóstico es la microscopía, a pesar de los inconvenientes que presenta, aunque cada vez es más frecuente combinarla con técnicas

Se tomará en consideración, de oficio, para la nota de admisión la cuarta materia troncal general, que define la modalidad de bachillerato, realizada en la FASE DE ACCESO a

[r]

Luis Miguel Utrera Navarrete ha presentado la relación de Bienes y Actividades siguientes para la legislatura de 2015-2019, según constan inscritos en el

Fuente de emisión secundaria que afecta a la estación: Combustión en sector residencial y comercial Distancia a la primera vía de tráfico: 3 metros (15 m de ancho)..

[r]

[r]

Para la realización de esta prueba se va a contextualizar al usuario en un espacio de desarrollo regular de la actividad, se establecerán condiciones ideales de espacio de trabajo