小编Vol*_*ker的帖子

如何在Java代码中测试Class.forName调用?

我最近在Java中乱用ClassLoaders,试图测试使用动态加载类(使用Class.forName(String name))和自定义的代码ClassLoader.

我有自己的自定义ClassLoader设置,应该可配置为ClassNotFoundException在尝试加载给定的类时抛出.

public class CustomTestClassLoader extends ClassLoader {
    private static String[] notAllowed = new String[]{};
    public static void setNotAllowed(String... nonAllowedClassNames) {
        notAllowed = nonAllowedClassNames;
    }
    public static String[] getNotAllowed() {
        return notAllowed;
    }
    public CustomTestClassLoader(ClassLoader parent){super(parent);}
    @Override
    protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
        for (String s : notAllowed) {
            if (name.equals(s)) {
                throw new ClassNotFoundException("Loading this class is not allowed for testing purposes.");
            }
        }

        if(name.startsWith("java") || name.startsWith("sun") …
Run Code Online (Sandbox Code Playgroud)

java unit-testing classloader

13
推荐指数
1
解决办法
2064
查看次数

标签 统计

classloader ×1

java ×1

unit-testing ×1