当我在Android Studio上运行代码的测试类时,我遇到了三种覆盖范围。
- 课程覆盖
- 方法覆盖范围
- 线路覆盖率
虽然方法覆盖对我来说相当简单,但我不理解行覆盖和类覆盖之间的区别。课程覆盖率是如何计算的?是否有一个公式将不同的指标考虑在内?如果与线路覆盖无关,我该如何提高班级覆盖率?
类覆盖率包括正在测试的类包中的所有类。如果在运行测试用例时不使用其他类,那么它将显示这些类的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&分别揭开,这样你就可以很容易地检查它考虑了哪些行。