2

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

  • 当我All tests使用 IntelliJ 运行时,出现 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删除数据库。

如果您需要其他任何东西,我会为它编辑。我真的不知道这种行为的原因。

谢谢你的帮助。

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

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

4

1 回答 1

0

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

于 2013-07-15T13:08:47.980 回答