Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

DbUnit testando MySQL Java


DbUnit pode trabalhar com banco de dados real. Você pode fazer isso apenas com xml.

Primeiro adicione ao pom.xml smth assim (a versão pode ser outra):
<dependency>
    <groupId>org.dbunit</groupId>
    <artifactId>dbunit</artifactId>
    <version>2.5.0</version>
</dependency>

<dependency>
    <groupId>com.github.springtestdbunit</groupId>
    <artifactId>spring-test-dbunit</artifactId>
    <version>1.1.0</version>
</dependency>

Em seguida, adicione ao seu diretório de recursos de teste spring-config.xml (eu uso postgresql)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver" />
        <property name="username" value="****" />
        <property name="password" value="*****" />
        <property name="url" value="url-to-server-with-your-db"/>
    </bean>

    <bean id="jdbcTemplate"
          class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg ref="dataSource" />
    </bean>

</beans>

Adicione beans para classes que você precisa testar neste xml.

Na classe de teste, adicione anotações:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/spring-config.xml"})
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class,
        DirtiesContextTestExecutionListener.class,
        TransactionalTestExecutionListener.class,
        DbUnitTestExecutionListener.class})

Antes do método de teste, adicione as anotações necessárias, dependendo do objetivo dos testes. Por exemplo:
@DatabaseSetup(value = "/testData.xml")
@DatabaseTearDown(value = "/testData.xml")

O que isto significa? Você tem seu xml com dataset. Os dados neste arquivo serão enviados para seu banco de dados antes do teste (@DatabaseSetup), e após o teste você pode fazer isso novamente (@DatabaseTearDown) - o mesmo arquivo para restaurar o estado inicial ou outro arquivo que você precisar. Isso é tudo.