使用h2数据库的JUnit测试表现奇怪

时间:2013-07-15 12:23:52

标签: java maven jdbc junit h2

我在一个使用JDBC连接到h2数据库的maven项目中编写了几个JUnit测试类。 我有8个测试类。

  • 当我使用IntelliJ运行All tests时,我遇到了JDBC错误(在最后一个测试类上: WorkspaceTest.java ):

org.h2.jdbc.JdbcSQLException: Table "WORKSPACE" not found; SQL statement:

(如果你想要完整的痕迹,我会把它,但它有点长)。

注意:所有其他7个测试类都已通过。

  • 当我使用IntelliJ单独运行每个测试时,它们都会逐一通过。

  • 当我使用mvn clean install运行测试时,出现构建失败,错误(在最后一个测试类: OWSContextTest.java ):

update(org.orbisgis.server.mapcatalog.OWSContextTest): Table "FOLDER" not found; SQL statement:

注意:所有其他7个测试类都已通过。

  • 当我使用mvn(mvn -Dtest=OWSContextTest test)单独运行此测试时,测试通过。

测试类应该是独立的,因为在每个测试类中都有@BeforeClass删除数据库,然后创建它,最后填充它,以及@AfterClass删除数据库

如果您还需要其他任何内容,我会为其进行编辑。 我真的不知道这种行为的原因。

感谢您的帮助。

编辑:我刚刚在IntelliJ上运行All tests大约10次,并且它工作了大约6次,并且失败了4次相同的错误。不知道我是否真的可以信任intelJ测试机制。

EDIT2:如果可以提供帮助,我尝试了更多的东西: 我在8个测试课程中跑了7个,所有8个测试课程(我一起跑1 2 3 4 5 6 7,然后2 3 4 5 6 7 8,然后......)他们都通过了(所有7个组合)超出8)

1 个答案:

答案 0 :(得分:0)

如果使用@BeforeClass删除数据库并重新创建它,它是否有效?也许测试的@AfterClass是在另一个测试的@BeforeClass之后执行的,因为它花费的时间比你预期的要多。