如何在使用GRADLEW BUILD运行时在每个测试类之间放置H2数据库?

问题描述:

伙计们,如何在使用GRADLEW BUILD运行时在每个测试类之间放置H2数据库?

请帮助我在下面入伍查询 -

我正在使用H2数据库的JUnit测试。 我正在测试注册并登录。所以,在这两种情况下,我需要创建我在每个测试类的@BeforeClass中创建的用户。现在,当我运行单个类测试用例时,它运行正常(原因是:它创建用户执行测试用例并自从使用H2 DB以来自动删除)。但是当我运行gradlew构建时,它在第一次测试之后就失败了。它给我错误“data.helper.ErrorException:用户标识必须是唯一的。” 任何帮助将被赞赏有关如何删除每个类之间的数据库。

谢谢

您可以使用DbUnit的库来处理在方便的方式你的问题。在测试用例之前填充数据库并清除之后。见http://dbunit.sourceforge.net/howto.html。另外要注意创建H2数据库配置字符串。数据库必须活着直到jvm关闭。 jdbc:h2:mem:test;DB_CLOSE_DELAY=-1

您可以在截断表的每个测试中添加@Before方法。这有助于避免单一测试课程中的测试副作用。

@Before 
public void truncateTables() { 
    //truncate tables 
} 

您应该使用@Before而不是@BeforeClass,以便在每个测试方法之前运行设置代码,而不是整个类运行一次。您也可以添加@After方法在每种测试方法之后执行任何清理。