【发布时间】:2020-09-14 10:16:31
【问题描述】:
当我在 Android Studio 上为我的代码运行测试类时,我遇到了三种覆盖率。
- 类覆盖率
- 方法覆盖率
- 线路覆盖率
虽然方法覆盖对我来说相当简单,但我不明白行覆盖和类覆盖之间的区别。如何计算班级覆盖率?是否有一个将不同指标考虑在内的公式?如果课程覆盖率与线路覆盖率无关,我该如何提高课程覆盖率?
【问题讨论】:
标签: android unit-testing intellij-idea junit
当我在 Android Studio 上为我的代码运行测试类时,我遇到了三种覆盖率。
虽然方法覆盖对我来说相当简单,但我不明白行覆盖和类覆盖之间的区别。如何计算班级覆盖率?是否有一个将不同指标考虑在内的公式?如果课程覆盖率与线路覆盖率无关,我该如何提高课程覆盖率?
【问题讨论】:
标签: android unit-testing intellij-idea junit
类覆盖率包括您正在测试的类包中的所有类。 如果您在运行测试用例时不使用其他类,那么它将显示这些类的 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,因此您可以轻松检查它考虑了哪些行。
【讨论】: