有没有办法让代码覆盖率覆盖像这样的类声明?
public class MyClass{
public static void foo(int bar){
System.out.println("The Number is: "+bar);
}
}
我可以轻松使用JUnit测试命中foo方法,但MyClass声明保持红色。这是因为该类本身没有构造函数吗?如果是这样,是否有任何方法可以覆盖代码的那一部分,而不更改类本身的代码呢?
谢谢
有没有办法让代码覆盖率覆盖像这样的类声明?
public class MyClass{
public static void foo(int bar){
System.out.println("The Number is: "+bar);
}
}
我可以轻松使用JUnit测试命中foo方法,但MyClass声明保持红色。这是因为该类本身没有构造函数吗?如果是这样,是否有任何方法可以覆盖代码的那一部分,而不更改类本身的代码呢?
谢谢
new MyClass()
的测试,它看起来像红色标记消失了。final
并创建一个私有构造函数。当然,如果您创建一个私有构造函数,那么在代码覆盖中会显示为红色-因为您无法调用私有构造函数!你的问题让我不得不给出两个评论,而不是直接回答:
除非有非常好的理由,否则不要使用 static
关键字。
一种普遍的误解是,用于提供共同功能的类应该具有(仅)static
方法。这来自于将只有 static
方法的类称为 utility classes 的习惯。
这样的 all static 实用程序类将使您的代码难以扩展和重用。并且您会扔掉面向对象编程中最强大的工具之一:多态性。而您唯一的优势就是不需要编写构造函数调用...
寻找 CodeCoverage 很容易,因为我们有工具可以给出这方面的数字,而管理人员喜欢评判开发人员的数字产出...
但更重要的是 requirement coverage。不幸的是,我们没有工具来衡量 requirement coverage。达到 100% requirement coverage 的唯一工具是测试/行为驱动开发(TDD/BDD)。
static
访问权限,则可以仅在需要时使用子类,而其他人甚至不会注意到。(开闭原则) - Timothy Truckle