私有构造函数junit / emma的覆盖范围

时间:2013-10-31 06:18:15

标签: java junit junit4 emma

如何为私有构造函数编写@test类。我也想用emma工具来覆盖它。

public final class Product {

    private Product() {

    }
}

有人可以提出一个简单的方法吗?

感谢。

2 个答案:

答案 0 :(得分:7)

测试私有方法的最佳方法是使用反射

有很多方法,但我会这么做;

@Test
    public void testConstructorIsPrivate() throws Exception {
      Constructor constructor = Product.class.getDeclaredConstructor();
      assertTrue(Modifier.isPrivate(constructor.getModifiers()));
      constructor.setAccessible(true);
      constructor.newInstance();
    }

这将涵盖运行coverage工具emma时的构造函数。

答案 1 :(得分:7)

我认为你不应该测试私有构造函数,因为它们是实现的一部分。仅为具有明确定义的合同的API方法编写测试。