代码覆盖率未达到 class 声明
Code coverage does not reach class declaration
有什么方法可以让代码覆盖率覆盖像这样的 class 的 class 声明?
public class MyClass{
public static void foo(int bar){
System.out.println("The Number is: "+bar);
}
}
我可以很容易地通过 JUnit 测试找到 foo 方法,但 MyClass 声明保持红色。这是因为 class 本身没有构造函数吗?如果是这样,有没有办法覆盖那部分代码,而不更改 class 本身的代码?
谢谢
这可能取决于您的特定环境。但我刚刚检查了 Eclipse/EclEmma 并看到了你描述的行为。
请记住,class 有一个构造函数 - 它是默认构造函数。如果您进行仅调用 new MyClass()
的测试,看起来红色标记会消失。
但是 - 对于仅具有静态方法的 class 的首选方法是将 class 标记为 final
并创建私有构造函数。当然,如果您创建一个私有构造函数,它将在代码覆盖率中显示为红色 - 因为您不能调用私有构造函数!
最后,请记住代码覆盖率是一种工具。我不会因为查看器中的红色标记而大费周章。
你的问题迫使我给出两条评论而不是直接回答:
除非有充分的理由,否则不要使用 static
关键字。
一个常见的误解是 class 用于提供通用功能的 es 应该(只)有 static
方法。这是由于习惯将仅使用 static
方法的 class 称为 实用程序 classes.
这样的全静态实用程序class将使您的代码难以扩展和重用。你扔掉了 OOP 中最强大的工具之一:多态性。你唯一的优势是不需要编写构造函数调用...
寻找 CodeCoverage 很容易,因为我们有工具可以为我们提供相关数据,而且管理人员喜欢通过他们产生的数据来判断开发人员...
但更重要的是需求覆盖率。不幸的是,我们没有工具来衡量 需求覆盖率 。我们必须达到 100% 需求覆盖率 的唯一工具是 test/behavior 驱动开发 (TDD/BDD).
有什么方法可以让代码覆盖率覆盖像这样的 class 的 class 声明?
public class MyClass{
public static void foo(int bar){
System.out.println("The Number is: "+bar);
}
}
我可以很容易地通过 JUnit 测试找到 foo 方法,但 MyClass 声明保持红色。这是因为 class 本身没有构造函数吗?如果是这样,有没有办法覆盖那部分代码,而不更改 class 本身的代码?
谢谢
这可能取决于您的特定环境。但我刚刚检查了 Eclipse/EclEmma 并看到了你描述的行为。
请记住,class 有一个构造函数 - 它是默认构造函数。如果您进行仅调用 new MyClass()
的测试,看起来红色标记会消失。
但是 - 对于仅具有静态方法的 class 的首选方法是将 class 标记为 final
并创建私有构造函数。当然,如果您创建一个私有构造函数,它将在代码覆盖率中显示为红色 - 因为您不能调用私有构造函数!
最后,请记住代码覆盖率是一种工具。我不会因为查看器中的红色标记而大费周章。
你的问题迫使我给出两条评论而不是直接回答:
除非有充分的理由,否则不要使用
static
关键字。一个常见的误解是 class 用于提供通用功能的 es 应该(只)有
static
方法。这是由于习惯将仅使用static
方法的 class 称为 实用程序 classes.这样的全静态实用程序class将使您的代码难以扩展和重用。你扔掉了 OOP 中最强大的工具之一:多态性。你唯一的优势是不需要编写构造函数调用...
寻找 CodeCoverage 很容易,因为我们有工具可以为我们提供相关数据,而且管理人员喜欢通过他们产生的数据来判断开发人员...
但更重要的是需求覆盖率。不幸的是,我们没有工具来衡量 需求覆盖率 。我们必须达到 100% 需求覆盖率 的唯一工具是 test/behavior 驱动开发 (TDD/BDD).