### Question:
ClassUtil { public static Class<?> classForName(final String javaClassName) { Assertion.check() .isNotBlank(javaClassName); try { return Class.forName(javaClassName); } catch (final ClassNotFoundException e) { throw WrappedException.wrap(e, "Impossible de trouver la classe : {0}", javaClassName); } } private  ClassUtil(); static Object newInstance(final String javaClassName); static J newInstance(final String javaClassName, final Class<J> type); static J newInstance(final Class<J> clazz); static J newInstance(final Constructor<J> constructor, final Object[] args); static Constructor<J> findConstructor(final Class<J> clazz, final Class<?>[] parameterTypes); static Class<?> classForName(final String javaClassName); static Class<? extends J> classForName(final String javaClassName, final Class<J> type); static Object invoke(final Object instance, final Method method, final Object... args); static void set(final Object instance, final Field field, final Object value); static Object get(final Object instance, final Field field); static Method findMethod(final Class<?> clazz, final String methodName, final Class<?>... parameterTypes); static Collection<Field> getAllFields(final Class<?> clazz, final Class<? extends Annotation> annotation); static Collection<Method> getAllMethods(final Class<?> clazz, final Class<? extends Annotation> annotation); static Collection<Field> getAllFields(final Class<?> clazz); static Collection<Method> getAllMethods(final Class<?> clazz); static Set<Class<?>> getAllInterfaces(final Class<?> clazz); static Class<?> getGeneric(final Constructor<?> constructor, final int i); static Class<?> getGeneric(final Method method, final int i); static Class<?> getGeneric(final Field field); static Class<?> getGeneric(
			final Type type,
			final Supplier<RuntimeException> exceptionSupplier); static String getPropertyName(final Method method);  }### Answer:
@Test public void testClassForNameCastException() { assertThrows(Exception.class, () -> { final String className = StringBuilder.class.getCanonicalName(); final Class<? extends String> created = ClassUtil.classForName(className, String.class); nop(created); }); }
@Test public void testClassForName() { final String className = StringBuilder.class.getCanonicalName(); assertEquals(StringBuilder.class, ClassUtil.classForName(className)); }
@Test public void testClassForNameFail() { assertThrows(Exception.class, () -> { final String className = StringBuilder.class.getCanonicalName() + "."; final Class<?> clazz = ClassUtil.classForName(className); nop(clazz); }); }
@Test public void testClassForNameWithType() { final String className = StringBuilder.class.getCanonicalName(); assertEquals(StringBuilder.class, ClassUtil.classForName(className, StringBuilder.class)); }
@Test public void testClassForNameWithTypeFail() { assertThrows(Exception.class, () -> { final String className = StringBuilder.class.getCanonicalName() + "."; final Class<?> clazz = ClassUtil.classForName(className, StringBuilder.class); nop(clazz); }); }
@Test public void testClassForNameWithSuperType() { final String className = StringBuilder.class.getCanonicalName(); assertEquals(StringBuilder.class, ClassUtil.classForName(className, Serializable.class)); }