代码之家  ›  专栏  ›  技术社区  ›  Junchen Liu

我们有一个@beforeTest方法吗?它可以在所有测试开始之前运行一次

  •  1
  • Junchen Liu  · 技术社区  · 12 年前

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

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

    谢谢

    2 回复  |  直到 12 年前
        1
  •  3
  •   MaDa    12 年前

    自从你用标记了你的问题 maven ,我走这条路:你可以用 pre-integration-test 阶段来运行这个一次性昂贵的脚本(对称地,您在 post-integration-test )。

    您可以为此使用exec-maven插件:

    <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没有这种注释,因为它没有对环境做出任何假设:它的目标是以隔离的方式一次测试一个类。

        2
  •  1
  •   abpan    12 年前

    DBUnit 提供了您想要的东西。它只是JUnit的扩展。

    • 它有像Clean_Insert这样的设置操作选项,这意味着数据库将被清理,所需的数据将被自动插入。以及许多其他功能,如刷新、更新、插入等
    • 事件更容易-为了使用Dbunit,您不需要扩展DBTestCase类。您可以替代标准 JUnit setUp() 方法,并在数据库上执行所需的操作。
    • 数据库配置操作
    • 数据集上有很多选项-平面、xml、数据库、流