在 Android Studio 中运行单元测试时,类覆盖率和行覆盖率有什么区别?

Shr*_*uja 6 junit android unit-testing intellij-idea

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

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

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

iam*_*sal 0

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

假设你的包应用程序中有 2 个类

-app
  -ClassA.java
  -ClassB.java
Run Code Online (Sandbox Code Playgroud)

用于测试

-app
  -ClassATest.java
Run Code Online (Sandbox Code Playgroud)

如果您运行 ClassATest.java 的测试用例,那么您将得到Class coverage 50%(1/2). 由于这两个类位于同一个包中,因此它也包含 ClassB。

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

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