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

时间:2020-09-14 10:16:31

标签: android unit-testing intellij-idea junit

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

  1. 课堂报道
  2. 方法范围
  3. 线路覆盖率

虽然方法覆盖范围对我来说很简单,但我不理解行覆盖范围和类覆盖范围之间的区别。班级覆盖率如何计算?是否有一个公式考虑了不同的指标?如果我与班级覆盖率无关,该如何提高班级覆盖率?

1 个答案:

答案 0 :(得分:0)

课程涵盖范围包括您正在测试的课程包中的所有课程。 如果您在运行测试用例时不使用其他类,那么它将显示这些类的类覆盖率为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将所有行分别标记为绿色和红色,分别表示“已覆盖”和“未覆盖”,因此您可以轻松地检查已考虑的行。