Saltar al contenido

Caso de prueba de Junit para el método de inserción de base de datos con DAO y servicio web

Te sugerimos que pruebes esta resolución en un ambiente controlado antes de pasarlo a producción, saludos.

Solución:

Esta es una prueba de dao de muestra que usa junit en el proyecto de primavera.

import java.util.List;

import junit.framework.Assert;

import org.jboss.tools.example.springmvc.domain.Member;
import org.jboss.tools.example.springmvc.repo.MemberDao;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:test-context.xml",
"classpath:/META-INF/spring/applicationContext.xml")
@Transactional
@TransactionConfiguration(defaultRollback=true)
public class MemberDaoTest

    @Autowired
    private MemberDao memberDao;

    @Test
    public void testFindById()
    
        Member member = memberDao.findById(0l);

        Assert.assertEquals("John Smith", member.getName());
        Assert.assertEquals("[email protected]", member.getEmail());
        Assert.assertEquals("2125551212", member.getPhoneNumber());
        return;
    

    @Test
    public void testFindByEmail()
    
        Member member = memberDao.findByEmail("[email protected]");

        Assert.assertEquals("John Smith", member.getName());
        Assert.assertEquals("[email protected]", member.getEmail());
        Assert.assertEquals("2125551212", member.getPhoneNumber());
        return;
    

    @Test
    public void testRegister()
    
        Member member = new Member();
        member.setEmail("[email protected]");
        member.setName("Jane Doe");
        member.setPhoneNumber("2125552121");

        memberDao.register(member);
        Long id = member.getId();
        Assert.assertNotNull(id);

        Assert.assertEquals(2, memberDao.findAllOrderedByName().size());
        Member newMember = memberDao.findById(id);

        Assert.assertEquals("Jane Doe", newMember.getName());
        Assert.assertEquals("[email protected]", newMember.getEmail());
        Assert.assertEquals("2125552121", newMember.getPhoneNumber());
        return;
    

    @Test
    public void testFindAllOrderedByName()
    
        Member member = new Member();
        member.setEmail("[email protected]");
        member.setName("Jane Doe");
        member.setPhoneNumber("2125552121");
        memberDao.register(member);

        List members = memberDao.findAllOrderedByName();
        Assert.assertEquals(2, members.size());
        Member newMember = members.get(0);

        Assert.assertEquals("Jane Doe", newMember.getName());
        Assert.assertEquals("[email protected]", newMember.getEmail());
        Assert.assertEquals("2125552121", newMember.getPhoneNumber());
        return;
    

El diseño de tus clases hará que sea difícil probarlas. Usar cadenas de conexión codificadas o crear instancias de colaboradores en sus métodos con new pueden considerarse como antipatrones de prueba. Eche un vistazo al patrón DependencyInjection. Los marcos como Spring pueden ser de ayuda aquí.

Para que se pruebe su DAO, debe tener control sobre la conexión de su base de datos en sus pruebas unitarias. Entonces, lo primero que querría hacer es extraerlo de su DAO en una clase que pueda simular o apuntar a una base de datos de prueba específica, que puede configurar e inspeccionar antes y después de la ejecución de sus pruebas.

Una solución técnica para probar el código db / DAO podría ser dbunit. Puede definir sus datos de prueba en un XML sin esquema y dejar que dbunit lo rellene en su base de datos de prueba. Pero todavía tienes que conectar todo tú mismo. Con Spring, sin embargo, puede usar algo como spring-test-dbunit que le brinda mucho apalancamiento y herramientas adicionales.

Como se llama a sí mismo un principiante total, sospecho que todo esto es muy desalentador. Debería preguntarse si realmente necesita probar el código de su base de datos. Si no es así, al menos debería refactorizar su código, para que pueda simular fácilmente todos los accesos a la base de datos. Para burlarse en general, eche un vistazo a Mockito.

@Test
public void testSearchManagementStaff() throws SQLException

    boolean res=true;
    ManagementDaoImp mdi=new ManagementDaoImp();
    boolean b=mdi.searchManagementStaff("[email protected]"," 123456");
    assertEquals(res,b);

valoraciones y reseñas

Agradecemos que desees añadir valor a nuestra información cooperando tu veteranía en las observaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *