我的JUnit测试是否更改了数据库?

时间:2015-06-24 08:30:06

标签: java database unit-testing junit

我一直在为我的程序编写单元测试。我写了一个测试,它将数据插入数据库,然后检查是否实际添加了这些数据。所以现在我想知道这个测试是否真的将数据永久地添加到数据库中(我无法访问它,因为它不是我的,所以我无法检查)。如果有人能给我一个答案,那就太棒了。

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果您不想对数据库进行任何更改,请使用您在本地设置的模拟数据库,或者在添加并检查后删除插入的数据。 其实。你应该总是删除你添加的数据,否则单元测试将在第一次执行后变得无用,因为数据将不再被添加,因为它已经存在并且断言将始终成功。

答案 1 :(得分:0)

单元测试确实不应该将数据插入数据库。您应该使用数据库模拟框架。

另一方面,集成测试测试这样的多层交互。

这很重要,因为通常在构建时执行单元测试,而集成测试在临时执行,在签入版本控制之前或在持续集成构建期间执行。

永远不要回答你的问题,你应该在可以回滚的事务或会话中进行插入。

或者,您也可以在应用程序上下文中覆盖数据源连接参数,以指向H2之类的临时本地in-memory database

另一个不太优选的选择是在测试,测试用例或测试套件完成后清理数据。

以下是一些可以帮助您测试数据库事务的JUnit模拟库: