相关疑难解决方法(0)

如何将测试覆盖率添加到私有构造函数?

这是代码:

package com.XXX;
public final class Foo {
  private Foo() {
    // intentionally empty
  }
  public static int bar() {
    return 1;
  }
}
Run Code Online (Sandbox Code Playgroud)

这是测试:

package com.XXX;
public FooTest {
  @Test 
  void testValidatesThatBarWorks() {
    int result = Foo.bar();
    assertEquals(1, result);
  }
  @Test(expected = java.lang.IllegalAccessException.class)
  void testValidatesThatClassFooIsNotInstantiable() {
    Class cls = Class.forName("com.XXX.Foo");
    cls.newInstance(); // exception here
  }
}
Run Code Online (Sandbox Code Playgroud)

工作正常,课程经过测试.但Cobertura表示,该类私有构造函数的代码覆盖率为零.我们如何为这样的私有构造函数添加测试覆盖率?

java testing code-coverage

106
推荐指数
8
解决办法
6万
查看次数

零实例枚举vs私有构造函数,用于防止实例化

一些实用程序类(think java.lang.Math)只声明一个私有构造函数,以防止实例化该类.

有没有什么特别的理由说明为什么这些类没有用0实例枚举实现?在我看来,enums是一种比构造函数上的访问修饰符更直接的控制实例化的方法.它还可以防止类本身创建实例,这些实例既可以防止程序员在脚中射击,也可以向外传递任何实例的保证.

约书亚布洛赫主张使用枚举作为单身人士.0-instance实用程序类不应该具有相同的优点吗?

我的问题: 0实例枚举与私有构造函数的优缺点是什么?(我个人认为使用枚举没有任何缺点,尽管私有构造函数似乎是更普遍的方法.)

(我知道java.lang.Math早些时候enum.我在这里说1.5+代码.)

java enums

5
推荐指数
1
解决办法
644
查看次数

标签 统计

java ×2

code-coverage ×1

enums ×1

testing ×1