我在我的 Java 应用程序中遇到了一个与单元测试相关的奇怪错误。
在单元测试期间,我使用预先填充了自定义数据的内存 HSQLDB(通过自动触发的插入脚本)和 Hibernate 作为 ORM 来访问它。
问题如下,如果我在单个类(即:TestDummyClass.java)上启动单元测试,则在每个方法 test 之后(从原始插入脚本)重新创建 db 。
如果我在包含多个测试类的整个项目(src/test)上启动单元测试,则数据库会在每个测试类的开头初始化,而不是在每个测试方法上初始化。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:com/wizche/app-context-test.xml" })
public class TestDummyClass {
.....
}
这意味着,例如,如果在 TestDummyClass 中我在某些测试方法中更改了数据库(即创建一个新对象),那么新对象将保留在同一类中的以下测试方法中。因此,如果我在项目或单个类上启动它,断言应该会有所不同!
有人可以解释一下为什么会这样吗?如何决定何时恢复 clean-db?
注意:我正在使用 SpringJUnit4ClassRunner 和整个测试项目的自定义上下文配置(其中没有与单元测试相关的参数)。NB2:我在 SpringEclipse 中直接启动 JUnit