【问题标题】:How to auto generate Junit test cases for Entity classes and DTO's in spring project如何在 Spring 项目中为实体类和 DTO 自动生成 Junit 测试用例
【发布时间】:2017-11-07 18:40:52
【问题描述】:

我正在做一个 Spring Boot 项目, 我有很多实体类和 DTO 类,其中大部分是 getter 和 setter。

是否有任何方法或插件可以为所有实体和 DTO 类创建 junit 测试用例。只是为了提高测试覆盖率。

目前使用这个框架 Spring boot、Hibernate、Junit 4.12、Mockito。 Java 1.8,智能 IDE。 前任: `

@Entity
@Table(name = "xyz")
public class Xyz {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    public Integer id;

    @Column(name = "col1")
    public Integer col1;

    @Column(name = "col2")
    public Integer co2;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    };`

【问题讨论】:

  • 我意识到这并不是您所要求的,但如果您的目标是提高测试覆盖率,您还可以考虑将那些 Entity/DTO 类从覆盖率指标中排除,假设它们确实充满了 getter 和二传手。
  • 是的,有相应的库:pojo-tester、equalsverifier、openpojo
  • @user3521432 添加了一种解决方案,它有助于增加代码覆盖率以及实体/DTO 类的单元测试。

标签: java spring-boot junit4


【解决方案1】:

永远不要为实体和 DTO 编写测试。通常它们没有任何您可以测试的业务逻辑(除非您的设计确实有问题)。

最好将它们排除在测试指标之外,而不是尝试进行测试以进行测试。

【讨论】:

  • 他们没有任何业务逻辑。我只需要它来进行测试覆盖。根据我们公司的标称,项目的线路覆盖率应大于 80。
  • 这并没有改变这样一个事实,即通过对 pojos 的测试来提高测试覆盖率并没有多大意义。如果您可以通过测试业务逻辑来专注于提高覆盖率,那就更好了。
  • 这让我想起了一种情况,即开发人员通过编写的代码量获得资金。他会编写大量的“spagetti code”来满足公司政策并获得更高的薪水,但这并不能使“spagetti code”成为一件好事。
  • 没有人遇到过equals和hashCode的实现方式不同导致HashMap疯狂运行的情况?即使使用 Lombok,我有时也会在类之间进行循环引用,从而导致 toString() 导致 StackOverflowError。只是说有时基本(非业务)逻辑也需要测试。
  • 实体是你的大部分业务逻辑应该存在的地方。这是spring社区的一个很大的误解。
【解决方案2】:

对于测试用例覆盖率,你可以像下面那样做,但我认为这不是好方法,但它有助于增加代码覆盖率:

public class XyzTest {

    public Xyz crateTestSuite(){
      return new Xyz();
     }

    @Test
    public void testGetId() {
     Integer id= 0;
     Xyz xyz =null;
     xyz = crateTestSuite();
     id = xyz.getId()

    }

    @Test
    public void setId(Integer id) {
     Integer id= 0;
     Xyz xyz =null;
     xyz = crateTestSuite();
     xyz.setId(id)
    } 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    相关资源
    最近更新 更多