测试Java数据库实体类

测试Java数据库实体类,java,unit-testing,entity-framework,Java,Unit Testing,Entity Framework,目前,我们正在测试实体类和“worker”类,为每个实体编写java servlet,并执行插入、更新、删除、查找。。。确保每个实体都能正常工作。worker类只是使用JDBC将实体持久化到数据库的接口的实现,它们为实体执行DB工作 我想知道的是,在Java中测试实体类的最佳方法是什么 我正在寻找一种自动化的方法,而不是编写一个模拟应用程序,它调用我试图为创建的每个新实体测试的所有函数。一个选项是使用反射查找实体的不同部分(即不同字段),然后让方法调用save、update、delete,等使用

目前,我们正在测试实体类和“worker”类,为每个实体编写java servlet,并执行插入、更新、删除、查找。。。确保每个实体都能正常工作。worker类只是使用JDBC将实体持久化到数据库的接口的实现,它们为实体执行DB工作

我想知道的是,在Java中测试实体类的最佳方法是什么


我正在寻找一种自动化的方法,而不是编写一个模拟应用程序,它调用我试图为创建的每个新实体测试的所有函数。

一个选项是使用反射查找实体的不同部分(即不同字段),然后让方法调用save、update、delete,等使用这些不同的实体。然后,当您添加一个新实体时,如果您的设置是使用xml或类似的东西完成的,那么测试只会选择它们


我是从Hibernate用户的角度讲的,所以这可能不完全适用于您的情况,但它在过去对我很有效。

您应该能够独立地设置和使用实体和“工作者”(如您所说)类或servlet和Web容器

使用纯JDBC和JUnit,您通常会执行以下操作:

  • TestCase
    构造函数中打开JDBC连接
  • setUp()
    上开始交易
  • tearDown()
    上回滚事务
  • 在特定的
    testXxx()
    方法中使用实际的实体实例

  • 在这种方法中,每个开发人员可能有一个本地数据库实例。对于更先进的东西,请考虑。

    你问的是什么不同于简单的单元测试?你能解释“使用反射”部分吗?这将如何帮助确定用什么值填充实体?特别是因为其中的一些(大多数?)可能在应用程序和/或数据库级别表达了约束。因此,在hibernate中,我们在类上添加了注释,以帮助跟踪这些信息,比如@column(length=50),通知我们VARCHAR的最长长度是50。我们也有一些标准,比如不在数据库中进行奇怪的验证(即奇怪的非标准约束)。您可以找到每个字段的类型,然后使用该类型生成值。如果字段本身是一个实体,您可以从数据库中附加一个现有的实体,也可以创建一个新的实体(视情况而定,即多对一对多关系)。不过,我不得不说,听起来您正在测试Hibernate Validator,与您的DAO一样多(或更多):-)是的,我更多的是检查DAO是否正确设置,以便与我们的数据库和持久层一起使用。在本例中,我还将检查DTO,并确保它们已正确映射。