hudson построить проект с использованием junit maven и HSQLDB в режиме сервера - PullRequest
1 голос
/ 01 декабря 2009

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

Ответы [ 3 ]

2 голосов
/ 01 декабря 2009

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

Другой вариант - использовать Плагин SQL Maven . Раздел examples имеет конфигурацию, которая показывает, как удалить / создать базу данных и схему, затем заполнить ее до фазы тестирования и удалить базу данных после фазы тестирования).

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

1 голос
/ 01 декабря 2009

Я добавляю следующее к пом.

<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>
0 голосов
/ 01 декабря 2009

Мы делаем это с Maven под Hudson, с профилем, который запускает maven-antrun-plugin на этапе process-test-resources. В нашем случае плагин 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>
...