package com.github.sbugat; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import org.junit.Test; public abstract class GenericUninstantiableClassTest { @Test(expected = InvocationTargetException.class) public void testUninstantiableClassConstructor() throws Exception { // System.out.println(this.getClass().getName().replace("Test$", "").replace("IT$", "")); final String targetClassName = getClass().getName().replaceFirst("Test$", "").replaceFirst("IT$", ""); @SuppressWarnings("rawtypes") final Class targetClass = Class.forName(targetClassName); System.out.println(targetClass.getName()); @SuppressWarnings({ "unchecked", "rawtypes" }) final Constructor uninstantiableClassConstructor = targetClass.getDeclaredConstructor(); uninstantiableClassConstructor.setAccessible(true); uninstantiableClassConstructor.newInstance(); } }