Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查代码覆盖率的单元测试中的反射_Java_Testing_Jakarta Ee_Tdd_Junit - Fatal编程技术网

Java 检查代码覆盖率的单元测试中的反射

Java 检查代码覆盖率的单元测试中的反射,java,testing,jakarta-ee,tdd,junit,Java,Testing,Jakarta Ee,Tdd,Junit,下面是一个场景。我有VO(值对象)或DTO对象,它们只是数据的容器。当我把它们分开保存到一个数据库中(由于很多原因)并不能很好地映射到VO时,我想测试一下,看看是否每个字段都在数据库中成功创建,并成功读回以重建VO 有没有一种方法可以让我的测试覆盖VO中的每个领域?作为解决方案的一部分,我有一个想法,使用反射来迭代VO的字段,但也许你们以前解决过这个问题 我希望在VO中添加字段时此测试失败,并且不记得在测试中添加检查 开发环境: 我建议使用JUnit、Hibernate/Spring和Eclip

下面是一个场景。我有VO(值对象)或DTO对象,它们只是数据的容器。当我把它们分开保存到一个数据库中(由于很多原因)并不能很好地映射到VO时,我想测试一下,看看是否每个字段都在数据库中成功创建,并成功读回以重建VO

有没有一种方法可以让我的测试覆盖VO中的每个领域?作为解决方案的一部分,我有一个想法,使用反射来迭代VO的字段,但也许你们以前解决过这个问题

我希望在VO中添加字段时此测试失败,并且不记得在测试中添加检查

开发环境: 我建议使用JUnit、Hibernate/Spring和Eclipse来完成此任务。
运行测试后,您将获得完整的代码覆盖率报告,如果您使用
cobertura check
ant任务,您可以添加覆盖率检查,并使用属性
haltonfailure
停止ant调用,您可以将其作为
VO
验证的一部分。如果在使用getter时未设置字段,则会引发异常。

保持简单:为每个VO/DTO编写一个测试:

  • 用测试数据填充VO/DTO
  • 省省吧
  • (可选:使用纯JDBC在数据库级别检查所有内容是否正确保存)
  • 加载它
  • 检查加载的VO/DTO与原始VO/DTO是否匹配
  • 生产代码将不断发展,测试也需要维护。使测试尽可能简单,即使它们是重复的,这是最好的方法过度设计测试或测试框架本身以使测试通用(例如,通过读取带有反射的字段并自动填充VO/DTO),会导致几个问题:

  • 编写测试所花费的时间更高
  • 测试本身可能会引入bug
  • 测试的维护更加困难,因为它们更加复杂
  • 测试更难发展,例如,通用代码可能不适用于新类型的VO/DTO,这些VO/DTO与其他VO/DTO略有不同,稍后将介绍(这只是一个示例)
  • 测试不能很容易地作为生产性代码工作方式的示例
  • 测试代码和生产代码在本质上是非常不同的。在生产性代码中,您试图避免重复并最大化重用。生产代码可能很复杂,因为它是经过测试的。另一方面,您应该尝试让测试尽可能简单,重复也可以。如果重复部分损坏,测试将失败

    当生产代码发生更改时,这可能需要对几个测试进行细微的更改。问题是测试被视为枯燥的代码。但我认为他们应该是这样的


    如果我把你的问题搞错了,就告诉我。

    我的意思不太清楚。我想确保VO中的所有字段都能够从DB后端进行CRUD,因为这不能保证,我必须为每个字段显式编码。基本上,我想写一个测试用例,确保我在测试用例中自动调用VO中的所有setter和getter,我只是不知道怎么做。我喜欢你保持测试简单和重复的方法。