繁体   English   中英

具有H2数据库的JUnit测试的行为异常

[英]JUnit tests with h2 database behave strangely

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

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

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

(如果您想要完整的跟踪信息,我会放它,但是有点长)。

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

  • 当我使用IntelliJ分别运行每个测试时,它们全部通过了1的测试。

  • 当我使用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上运行了大约10次All tests ,它工作了大约6次,并以相同的错误失败了4次。 不知道我是否真的可以信任智能测试机制。

EDIT2:如果有帮助,我尝试了更多尝试:我在8个测试类中总共运行了7个,对于所有8个类(我一起运行1 2 3 4 5 6 7,然后一起运行2 3 4 5 6 7 8,然后。 ..)他们都通过了(8个中的7个都组合)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM