Покрытие для частного конструктора 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 с четко определенными контрактами.

Другие вопросы по тегам