1

在 Junit 中,我知道有一个 @beforeclass , @before 注释,我们是否有一个注释或设计,允许我们编写一个在整个测试过程之前只运行一次的方法?

我们有一个脚本,它为测试设置了一些数据库数据(配置、静态、查找表等......),但是在每个单独的测试之前运行它太昂贵了,我们希望它设置它,之前只设置一次开始运行任何测试。

谢谢!

4

2 回答 2

3

既然您用 标记了您的问题maven,我将采用这种方式:您可以使用该pre-integration-test阶段来运行这个一次性昂贵的脚本(对称地,您在 中进行清理post-integration-test)。

您可以为此使用 exec-maven-plugin:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>...</version>
  <executions>
    <execution>
      <id>some-execution</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>exec</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <executable><!-- runnable command or file name here --></executable>
  </configuration>
</plugin> 

JUnit 没有这种注解,因为它不对环境做任何假设:它的目标是以隔离的方式一次测试一个类。

于 2012-09-24T16:11:50.267 回答
1

DBUnit提供了您正在寻找的东西。它只是一个 JUnit 扩展。

  • 它具有诸如 Clean_Insert 之类的设置操作选项 - 这意味着将清理数据库并自动插入所需的数据。和许多其他的,如刷新、更新、插入等
  • 事件更简单 - 为了使用 Dbunit,您不需要扩展 DBTestCase 类。您可以覆盖标准JUnit setUp()方法并在数据库上执行所需的操作。
  • 数据库配置操作
  • 数据集上有很多选项 - 平面、xml、数据库、流式传输
于 2012-09-24T15:49:17.407 回答