hudson создает проект, используя junit maven и HSQLDB в режиме сервера

У меня есть проект сохранения с Spring и Hibernate, созданный с помощью maven, я запускаю тестирование с использованием Junit и тестовой базы данных HSQLDB, когда я выполняю тест, сначала инициализирую базу данных HSQLDB. strong> в режиме сервера есть ли способ заставить hudson инициализировать базу данных или с помощью maven?


person atomsfat    schedule 01.12.2009    source источник


Ответы (3)


Я бы использовал DbUnit и Плагин DbUnit Maven для этого. Вы можете использовать его для очистить базу данных и вставить набор данных перед этапом тестирования. и/или настроить данные для каждого теста (см. Начало работы для JUnit 3, см., например, эту запись в блоге для JUnit 4).

Другой вариант — использовать подключаемый модуль SQL Maven. В разделе примеры есть конфигурация, показывающая, как удалить/ создать базу данных и схему, затем заполнить ее перед этапом тестирования и удалить базу данных после этапа тестирования).

Более поздний подход дает вам меньше контроля над настройкой данных между тестами, поэтому я предпочитаю DbUnit.

person Pascal Thivent    schedule 01.12.2009
comment
Я начинаю с плагина SQL Maven, и он работает, спасибо, но в следующий раз я буду использовать DbUnit. - person atomsfat; 01.12.2009
comment
Из того, что я прочитал, DbUnit Maven Plugin похоже поддерживает только DML, а не DDL. В то время как SQL Maven Plugin поддерживает как DML, так и DDL, что удобно, чтобы сначала создать схему, а затем инициализировать данные, как через maven. - person Pat; 10.09.2014

Я добавляю следующее в pom.

<build>
        <extensions>
            <extension>
                <groupId>hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
                <version>1.8.0.7</version>
            </extension>
            <extension>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.14</version>
            </extension>
        </extensions>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>hibernate3-maven-plugin</artifactId>
                <version>2.0</version>

                <configuration>
                    <components>
                        <component>
                            <name>hbm2java</name>
                            <implementation>annotationconfiguration</implementation>
                            <outputDirectory>/src/main/java</outputDirectory>
                        </component>

                    </components>
                    <componentProperties>
                        <jdk5>true</jdk5>
                        <export>false</export>
                        <drop>true</drop>
                        <outputfilename>schema.sql</outputfilename>
                    </componentProperties>
                </configuration>

                <executions>
                    <execution>
                        <id>generate-ddl</id>
                        <phase>process-classes</phase>
                        <goals>
                            <!--Genera Esquema-->
                            <goal>hbm2ddl</goal>
                            <!--Genera Clases -->
                        <!-- <goal>hbm2java</goal>  -->

                        </goals>
                    </execution>
                </executions>
            </plugin>



            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>sql-maven-plugin</artifactId>
                <version>1.0</version>
                <executions>
                    <execution>
                        <id>create-schema</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                        <configuration>
                            <autocommit>true</autocommit>
                            <srcFiles>
                                <srcFile>target/hibernate3/sql/schema.sql</srcFile>
                            </srcFiles>
                        </configuration>
                    </execution>


                    <execution>
                        <id>drop-db-after-test</id>
                        <phase>test</phase>
                            <goals>
                                <goal>execute</goal>
                            </goals>
                            <configuration>
                                <autocommit>true</autocommit>
                                <sqlCommand>DROP SCHEMA public CASCADE</sqlCommand>
                            </configuration>
                        </execution>
                    </executions>

                    <dependencies>
                        <dependency>
                            <groupId>hsqldb</groupId>
                            <artifactId>hsqldb</artifactId>
                            <version>1.8.0.7</version>
                        </dependency>
                    </dependencies>

                    <configuration>
                        <driver>org.hsqldb.jdbcDriver</driver>
                        <username>sa</username>
                        <password></password>
                        <url>jdbc:hsqldb:file:etc/out/test.db;shutdown=true</url>
                        <autocommit>true</autocommit>
                        <skip>${maven.test.skip}</skip>
                    </configuration>
                </plugin>

            </plugins>
        </build>

и следующее для моего источника данных:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="true"
    destroy-method="close">
 <property name="driverClassName" value="org.hsqldb.jdbcDriver" />

 <property name="url" value="jdbc:hsqldb:file:etc/out/test.db;shutdown=true" />


    <property name="username" value="sa" />
    <property name="password" value="" />
</bean>
person atomsfat    schedule 01.12.2009

Мы делаем это с помощью Maven под Hudson с профилем, который запускает плагин maven-antrun-plugin на этапе ресурсов-процессов-тестов. В нашем случае maven-antrun-plugin запускает класс Java, который генерирует схему, но, конечно, есть и другие варианты. Это выглядит так:

    <profile>
        <id>dev</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>generate-database-schema-new</id>
                            <phase>process-test-resources</phase>
                            <configuration>
                                <tasks>
                                    ...
                                </tasks>
                            </configuration>
                            <goals>
                                <goal>run</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
person FelixM    schedule 01.12.2009
comment
Эта стратегия также действительна для меня - person atomsfat; 01.12.2009