【问题标题】:What is the difference between class coverage and line coverage while running unit tests in Android Studio?在 Android Studio 中运行单元测试时,类覆盖率和行覆盖率有什么区别?
【发布时间】:2020-09-14 10:16:31
【问题描述】:

当我在 Android Studio 上为我的代码运行测试类时,我遇到了三种覆盖率。

  1. 类覆盖率
  2. 方法覆盖率
  3. 线路覆盖率

虽然方法覆盖对我来说相当简单,但我不明白行覆盖和类覆盖之间的区别。如何计算班级覆盖率?是否有一个将不同指标考虑在内的公式?如果课程覆盖率与线路覆盖率无关,我该如何提高课程覆盖率?

【问题讨论】:

    标签: android unit-testing intellij-idea junit


    【解决方案1】:

    类覆盖率包括您正在测试的类包中的所有类。 如果您在运行测试用例时不使用其他类,那么它将显示这些类的 0% 类覆盖率。

    假设你在包 app

    中有 2 个类
    -app
      -ClassA.java
      -ClassB.java
    

    用于测试

    -app
      -ClassATest.java
    

    如果您运行 ClassATest.java 的测试用例,那么您将获得Class coverage 50%(1/2)。 由于两个类都在同一个包中,所以它也包含了 ClassB。

    有趣的是,如果您在任何测试用例中创建一个ClassB 对象并再次运行相同的ClassATest 用例,那么您将得到Class coverage 100%(2/2),因为您已经使用了这两个类。

    行覆盖覆盖实际的代码行。 IntelliJ 将所有行分别标记为绿色和红色为 Covered 和 Uncovered,因此您可以轻松检查它考虑了哪些行。

    【讨论】:

      猜你喜欢
      • 2018-10-18
      • 2013-03-08
      • 2021-08-25
      • 1970-01-01
      • 2016-12-07
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      相关资源
      最近更新 更多