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



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

  1. 课程覆盖
  2. 方法覆盖范围
  3. 线路覆盖率

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

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

假设包中有两个类app

-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&分别揭开,这样你就可以很容易地检查它考虑了哪些行。

最新更新