java - 用于测试来自数据库的数据的 JUnit 测试用例是最新的而不是过时的

标签 java database unit-testing junit

我正在从我的 Service 类方法 mDataVO.getMarketData() 获取数据库中的数据列表,其中 mDataVOmarketDataVO 是一个值对象,用于存储不同类型的数据。

在我的 getMarketData() 中,我正在制作一个 Hibernate Query 以从数据库中获取数据。现在我的目标是在我的单元测试类中对这些数据进行单元测试,并确保从方法调用中获取正确的数据和返回的数据不是陈旧的,并且与数据库中的最新值相同。

为了这个目的,在我的单元测试类中,我使用了相同的Hibernate Query,所以现在我得到了相同的数据集这并没有解决单元测试的目的,因为我只是比较相同的数据这是通过在数据库中运行相同的查询获得的。我不确定如何对这种情况进行单元测试。

Am I missing out point of unit testing or not seeing any values in my unit test case?

更新 问题仍然没有答案。还有更多建议吗?

最佳答案

正如您可能猜到的那样,测试数据库的问题在于数据。

我认为解决这个问题的方法是拥有一个与您的生产模式相匹配的测试数据库。执行您需要执行的操作以填充数据库、测试数据访问对象,然后删除测试数据库。

另一种方法是创建您知道应该获取的数据集,将其插入数据库,进行查询并确保查询结果与数据集匹配,然后将整个事情作为一个事务回滚。这样您的测试数据始终是最新的,但不会对您的数据库造成任何损害。

测试数据库 DAO 以进行单元测试。一旦它开始工作,您应该在测试服务时模拟 DAO。对服务进行单元测试意味着您不再担心 DAO。只需确保该服务获得证明其正常运行所需的数据即可。

关于java - 用于测试来自数据库的数据的 JUnit 测试用例是最新的而不是过时的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6867957/

相关文章:

java - Thymeleaf 中的多维数组搜索?

python - 在 Postgresql 中存储版本的最佳方式

python - SQLAlchemy 中查询的单元测试

angularjs - 使用Jasmine和Karma难以在AngularJS中进行测试驱动开发

c++ - 需要对返回常量值的方法编写测试吗?

java - 为什么我无法在 hibernate 中更改刷新模式

java - 如何用可选的替换获取阶梯?

java - 基于条件的 Jackson JSON 日期格式序列化

mysql - MAMP 和 MyPHPAdmin 参数格式不正确

database - 如何在 VB.Net 中使用数据库查询创建 Excel 文件?