Бывают такие ситуации, когда надо что-то протестировать на предварительно подготовленной БД, потом это все убить, снова подготовить итд итд...
Получаем такую последовательность действий:
Получаем такую последовательность действий:
- Создаем БД.
- Заполняем ее через внешний интерфейс.
- Выполняем свои тесты.
- Дропаем все нафик.
- Снова создаем.
- Снова заполняем ровно теми же данными, так как нам нужно проверить именно их, но в разных вариантах развития.
- Выполняем свои тесты
- ...
Правда, уныло? А, главное, долго!
Когда передо мной встала такая задача, я сначала попробовала ее обойти, написав автотест. Ну а что? Занесла один раз нужное состояние БД в эксельничек и все, доверилась машине. Все-таки, мне стало гораздо спокойнее писать один тест, чем проверять что-то вручную, надежнее оно...
Но иногда бывает так, что в данном случае автотест излишен, и написать сложно, и не стоит оно того... Но! Автотесты ведь при прогоне подготавливают базу данных... А значит, я могу написать тест без ожидаемого результата. Или с любым скопипасченным результатом, который будет неправильным - пусть тест падает, коммитить его не надо, а так хоть БД подготовит, все помощь.
Озвучила мысли разработчику и пошла пилить тест. Но что-то у нас с ним не сложилось... Не создавал БД, хоть ты тресни.
Разработчик посмотрел-посмотрел на мои страдания и сделал утилитку, которая заполняет БД по xls (возможны и другие форматы) без дополнительных танцев с бубнами.
Разработчик посмотрел-посмотрел на мои страдания и сделал утилитку, которая заполняет БД по xls (возможны и другие форматы) без дополнительных танцев с бубнами.
Итак, ребята! Если у Вас установлен Maven, пользуйтесь (как же раздражает это дурацкое форматирование в блоге при вставке текста, но уж извините, как есть...).
- Создаем pom.xml
- Создаем Start.xls
Создаем БД!
1. В разделе common configurations заполнить данные по схеме БД, которую будем заполнять
<username>test</username>
<password>test</password>
<schema>test_schema</schema>
2. В разделе specific configurations в параметре src указать путь к файлу
<src>C:\dbunit_load\Start.xls</src>
3. Запустить утилиту!
mvn clean package
Ну вот и все
Настройка pom.xml
Утилита настроена на работу с oracle-драйвером.
Исходник Pom-а, меняем под свою организацию (себя):
- groupId - the id of the project's group.
- description - описание
- url - строка подключения к БД
- username - логин
- password - пароль
- schema - название схемы
- src - путь к файлу
<?xml
version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>group</groupId>
<artifactId>dataset-load</artifactId>
<version>0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Loader</name>
<description>TADA!</description>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>dbunit-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<!--jar file that has the jdbc
driver -->
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.2-FINAL</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- common configurations -->
<configuration>
<driver>oracle.jdbc.OracleDriver</driver>
<url>jdbc:oracle:thin:@server:port:sid</url>
<username>test</username>
<password> test </password>
<schema>test_schema </schema>
<format>xls</format>
<datatypeWarning>true</datatypeWarning>
<dataTypeFactoryName>org.dbunit.ext.oracle.Oracle10DataTypeFactory</dataTypeFactoryName>
<skipOracleRecycleBinTables>true</skipOracleRecycleBinTables>
</configuration>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>operation</goal>
</goals>
<!-- specific configurations
-->
<configuration>
<type>CLEAN_INSERT</type>
<src>C:\auto_db\Start.xls</src>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Для DDL операций и создания БД мне больше понравилось использовать liquibase, чем dbunit
ОтветитьУдалитьЯсно что ничего не ясно)
ОтветитьУдалить