private boolean loadBak() {
        String fileName = null;
        try {
            fileName = this.configFilePath() + ".bak";
            String jsonString = MixAll.file2String(fileName);
            if (jsonString != null && jsonString.length() > 0) {
                this.decode(jsonString);
                log.info("load " + fileName + " OK");
                return true;
            }
        } catch (Exception e) {
            log.error("load " + fileName + " Failed", e);
            return false;
        }

        return true;
    }
@Test
    public void testLoadBak() throws Exception {
        ConfigManager testConfigManager = buildTestConfigManager();
        File file = createAndWriteFile(testConfigManager.configFilePath() + ".bak");
        // invoke private method "loadBak()"
        Method declaredMethod = ConfigManager.class.getDeclaredMethod("loadBak");
        declaredMethod.setAccessible(true);
        Boolean loadBakResult = (Boolean) declaredMethod.invoke(testConfigManager);
        assertTrue(loadBakResult);
        file.delete();

        Boolean loadBakResult2 = (Boolean) declaredMethod.invoke(testConfigManager);
        assertTrue(loadBakResult2);
        declaredMethod.setAccessible(false);
    }