protected void cleanLocalMeAndOMMInvalidDirs(List<String> invalidDirList) { if(!invalidDirList.isEmpty()) { log.info("Clean invalid dir {}", invalidDirList); File neDir; for(String dir : invalidDirList) { neDir = new File(dir); if(invalidNeDir(neDir)) { log.info("Delete {} is {}", dir, FileUtils.deleteQuietly(neDir)); } } } } 不报异常写UT
时间: 2024-02-15 08:06:14 浏览: 21
这段代码是一个方法,它会遍历传入的invalidDirList列表,删除其中所有的无效目录。如果传入的列表为空,则不会执行操作。
在编写UT时,你可以模拟一些无效目录,并将它们添加到invalidDirList列表中,然后调用cleanLocalMeAndOMMInvalidDirs方法,验证是否成功删除这些目录。你可以使用JUnit或其他测试框架编写测试用例,确保测试的覆盖率和正确性。
例如,可以编写一个测试用例,创建一个临时目录,并在其中创建一个名为"invalid_dir"的子目录,然后将其添加到invalidDirList列表中。然后调用方法,并断言该目录已被成功删除。需要注意的是,在测试完成后要清理测试数据。
相关问题
private void cleanLocalMeAndOMMInvalidDirs(List<String> invalidDirList) { if(!invalidDirList.isEmpty()) { log.info("Clean invalid dir {}", invalidDirList); File neDir; for(String dir : invalidDirList) { neDir = new File(dir); if(invalidNeDir(neDir)) { log.info("Delete {} is {}", dir, FileUtils.deleteQuietly(neDir)); } } } }} 写ut
好的,这段代码看起来是一个方法,用于清理本地的一些无效目录。针对这段代码,我们可以编写如下的单元测试(UT):
```
@Test
public void testCleanLocalMeAndOMMInvalidDirs() throws IOException {
List<String> invalidDirList = new ArrayList<>();
invalidDirList.add("/path/to/invalid/dir1");
invalidDirList.add("/path/to/invalid/dir2");
// 创建两个无效目录
new File("/path/to/invalid/dir1").createNewFile();
new File("/path/to/invalid/dir2").createNewFile();
// 调用被测试方法
cleanLocalMeAndOMMInvalidDirs(invalidDirList);
// 判断两个目录是否被删除
assertFalse(new File("/path/to/invalid/dir1").exists());
assertFalse(new File("/path/to/invalid/dir2").exists());
}
```
这个测试方法首先创建了两个无效目录,然后调用了被测试方法 `cleanLocalMeAndOMMInvalidDirs()`,最后通过 `assertFalse()` 方法判断这两个目录是否被成功删除。
优化 private void addReferencedKpi(List<SimulationTableDto> list, List<String> codeList, List<Map<String, List<String>>> referencedList) { if (CollectionUtils.isEmpty(list) || CollectionUtils.isEmpty(codeList) || CollectionUtils.isEmpty(referencedList)) { return; } // 转换结构 key1-table key2-column value-codeList Map<String, Map<String, List<String>>> tableColumnWithCodeListMap = Maps.newHashMap(); int size = referencedList.size(); for (int i = 0; i < size; i++) { String code = codeList.get(i); Map<String, List<String>> referencedPerMap = referencedList.get(i); if (MapUtils.isEmpty(referencedPerMap)) { continue; } referencedPerMap.forEach((table, columns) -> { tableColumnWithCodeListMap.putIfAbsent(table, Maps.newHashMap()); for (String column : columns) { tableColumnWithCodeListMap.get(table).putIfAbsent(column, Lists.newArrayList()); tableColumnWithCodeListMap.get(table).get(column).add(code); } }); } for (SimulationTableDto simulationTableDto : list) { String simTableName = simulationTableDto.getTableName(); String simTitle = simulationTableDto.getColumn().getTitle(); if (!tableColumnWithCodeListMap.containsKey(simTableName) || !tableColumnWithCodeListMap.get(simTableName).containsKey(simTitle)) { continue; } List<String> referencedCodeList = tableColumnWithCodeListMap.get(simTableName).get(simTitle); simulationTableDto.getColumn().setReferencedKpis(referencedCodeList); } }
可以尝试优化一下代码结构,减少嵌套层数,使得代码更加易读和易维护。例如可以将转换结构的代码抽取成一个单独的方法,用于处理每个 referencedPerMap 中的数据,并返回转换后的表格和列名以及对应的 codeList 的 Map 对象。同时,可以考虑使用 Java 8 的 Stream API,更加简洁地实现循环操作。修改后的代码如下:
```
private void addReferencedKpi(List<SimulationTableDto> list, List<String> codeList, List<Map<String, List<String>>> referencedList) {
if (CollectionUtils.isEmpty(list) || CollectionUtils.isEmpty(codeList) || CollectionUtils.isEmpty(referencedList)) {
return;
}
// 转换结构 key1-table key2-column value-codeList
Map<String, Map<String, List<String>>> tableColumnWithCodeListMap = new HashMap<>();
referencedList.forEach(referencedPerMap -> {
if (MapUtils.isEmpty(referencedPerMap)) {
return;
}
referencedPerMap.forEach((table, columns) -> {
tableColumnWithCodeListMap.computeIfAbsent(table, k -> new HashMap<>());
columns.forEach(column -> tableColumnWithCodeListMap.get(table).computeIfAbsent(column, k -> new ArrayList<>()).addAll(codeList));
});
});
list.forEach(simulationTableDto -> {
String simTableName = simulationTableDto.getTableName();
String simTitle = simulationTableDto.getColumn().getTitle();
tableColumnWithCodeListMap.computeIfPresent(simTableName, (table, columnMap) -> {
if (columnMap.containsKey(simTitle)) {
simulationTableDto.getColumn().setReferencedKpis(columnMap.get(simTitle));
}
return columnMap;
});
});
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)