Continuous integration 如何在单元测试和集成测试之前设置测试环境?

Continuous integration 如何在单元测试和集成测试之前设置测试环境?,continuous-integration,integration-testing,qa,exec-maven-plugin,maven-failsafe-plugin,Continuous Integration,Integration Testing,Qa,Exec Maven Plugin,Maven Failsafe Plugin,我想在整个测试开始之前创建一个数据库,并在测试结束时以这种方式删除数据库: <build> <plugins> <!-- MOJO PLUGIN THAT LOADS THE INITIAL DATABASE --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven

我想在整个测试开始之前创建一个数据库,并在测试结束时以这种方式删除数据库:

<build>
     <plugins>
    <!-- MOJO PLUGIN THAT LOADS THE INITIAL DATABASE -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
          <execution>
            <id>load-test-db</id>
            <phase>test</phase>
            <goals>
              <goal>java</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <mainClass>com.example.ci.ScriptRunner</mainClass>
          <classpathScope>test</classpathScope>
        </configuration>
      </plugin>
    </plugins>
  </build>
  • 使用测试数据集创建数据库
  • 执行Junits
  • 执行集成测试
  • 删除带有测试数据集的数据库
  • 我认为在预集成测试阶段使用maven failsafe插件是可能的,但是在junit测试之后,该阶段会被触发

    关于如何实现这一点有什么想法吗?谢谢

    更新: 我试图通过execmaven插件实现这一点。我创建了一个java类来加载数据库,显然可以做任何我想做的事情。我这样称呼它:

    <build>
         <plugins>
        <!-- MOJO PLUGIN THAT LOADS THE INITIAL DATABASE -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2</version>
            <executions>
              <execution>
                <id>load-test-db</id>
                <phase>test</phase>
                <goals>
                  <goal>java</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <mainClass>com.example.ci.ScriptRunner</mainClass>
              <classpathScope>test</classpathScope>
            </configuration>
          </plugin>
        </plugins>
      </build>
    
    
    org.codehaus.mojo
    execmaven插件
    1.2
    负载测试数据库
    测验
    JAVA
    com.example.ci.ScriptRunner
    测验
    
    然而,该类从未被调用,好像测试阶段永远不会开始。。。
    我的方法有效吗?

    您创建的数据集是什么格式?你的框架中有现有的数据层吗?嗨,Mutt,有一个mysql,应用程序直接使用JDBC。我个人会创建SQL创建/删除脚本,并在前后执行它们。它可以直接嵌入数据访问层,并在测试开始和结束时调用。如果数据库是可靠的,您可以导出这些脚本。谢谢。问题是,有数百个JUnit和数十个集成测试,它们都是从maven调用的。前后如何执行?我想要上面的maven代码(我更新了原始问题)。由于某种原因,代码没有调用POJO方法。。。或者其他技术?