Покрытие для частного конструктора junit/emma
Как я могу написать класс @test для частного конструктора. я хочу покрыть это Эммой тоже.
public final class Product {
private Product() {
}
}
Может кто-нибудь предложить простой способ?
Благодарю.
2 ответа
Решение
Лучший способ проверить приватные методы - использовать Reflection.
Есть много способов, но я бы просто сделал это;
@Test
public void testConstructorIsPrivate() throws Exception {
Constructor constructor = Product.class.getDeclaredConstructor();
assertTrue(Modifier.isPrivate(constructor.getModifiers()));
constructor.setAccessible(true);
constructor.newInstance();
}
Это покроет конструктор при запуске инструмента покрытия emma.
Я не думаю, что вам следует тестировать частные конструкторы, так как они являются частью реализации. Пишите тесты только для методов API с четко определенными контрактами.