public static String loadMigrationRule(Set<ClassLoader> classLoaders, String fileName) {
        String rawRule = "";
        if (checkFileNameExist(fileName)) {
            try {
                try (FileInputStream input = new FileInputStream(fileName)) {
                    return readString(input);
                }
            } catch (Throwable e) {
                logger.warn(
                        COMMON_IO_EXCEPTION,
                        "",
                        "",
                        "Failed to load " + fileName + " file from " + fileName + "(ignore this file): "
                                + e.getMessage(),
                        e);
            }
        }

        try {
            List<ClassLoader> classLoadersToLoad = new LinkedList<>();
            classLoadersToLoad.add(ClassUtils.getClassLoader());
            classLoadersToLoad.addAll(classLoaders);
            for (Set<URL> urls : ClassLoaderResourceLoader.loadResources(fileName, classLoadersToLoad)
                    .values()) {
                for (URL url : urls) {
                    InputStream is = url.openStream();
                    if (is != null) {
                        return readString(is);
                    }
                }
            }
        } catch (Throwable e) {
            logger.warn(
                    COMMON_IO_EXCEPTION,
                    "",
                    "",
                    "Failed to load " + fileName + " file from " + fileName + "(ignore this file): " + e.getMessage(),
                    e);
        }
        return rawRule;
    }
@Test
    void testLoadMigrationRule() {
        Set<ClassLoader> classLoaderSet = new HashSet<>();
        classLoaderSet.add(ClassUtils.getClassLoader());
        String rule = ConfigUtils.loadMigrationRule(classLoaderSet, "dubbo-migration.yaml");
        Assertions.assertNotNull(rule);
    }