package com.zte.ums.cnms.pm.datfileupload.ranomm.clean; import com.zte.ums.cnms.pm.datfileupload.ranomm.util.Utils; import lombok.extern.slf4j.Slf4j; import javax.inject.Inject; import java.util.HashMap; import java.util.Map; import java.util.List; import java.nio.file.Paths; @Slf4j public class FileCleanRunnable implements Runnable{ // @Inject // private FileCleanTask fileCleanTask; // @Inject // private CleanTaskPollService cleanTaskPollService; private FileCleanParaQueryService fileCleanParaQueryService=new FileCleanParaQueryService(); // private FileCleanTaskResponse fileCleanTaskResponse; private Map<String, Integer> cleanPathRetainMap=new HashMap<>(); private String dir; public FileCleanRunnable(String dir){ this.dir = dir; } @Override public void run() { //do cleaning // neIdDirs=fileCleanTask.getCleanDirs(); // log.info("prepared Clean Dir:"+dir); try { cleanDir(); } catch (Exception e) { log.error("File clean me dir: failed",e); } } private void cleanDir() { long startTimeMills = System.currentTimeMillis(); String tmpPath; log.info("fileCleanParaQueryService:"+fileCleanParaQueryService); Map<String, Integer> pmParas= fileCleanParaQueryService.getCleanParas(); cleanPathRetainMap.put(CleanUtil.FTP, pmParas.get(FileCleanParaQueryService.LOCAL_FTP)); cleanPathRetainMap.put(CleanUtil.BAK, pmParas.get(FileCleanParaQueryService.LOCAL_BAK)); cleanPathRetainMap.put(CleanUtil.PARSE_ERR, pmParas.get(FileCleanParaQueryService.LOCAL_PARSE_ERR)); log.info("File clean thread start, clean dir : {} ", dir); // for (String neIdDir : dir) { for (Map.Entry<String, Integer> entry : cleanPathRetainMap.entrySet()) { tmpPath = Paths.get(dir, entry.getKey()).toString(); log.info("tmpPath:"+tmpPath); Utils.deleleFilesOfDir(tmpPath, entry.getValue()); } // } log.info("File clean thread finish,dir size: {},cost: {} ms", dir, (System.currentTimeMillis() - startTimeMills)); } }写单元测试,框架为junit3
时间: 2024-02-15 15:06:19 浏览: 399
好的,以下是一个可能的JUnit3测试类的示例,用于测试上述代码中的FileCleanRunnable类:
```
import junit.framework.TestCase;
public class FileCleanRunnableTest extends TestCase {
private FileCleanRunnable fileCleanRunnable;
private String dir = "C:/clean";
public void setUp() {
fileCleanRunnable = new FileCleanRunnable(dir);
}
public void testCleanDir() {
fileCleanRunnable.run();
// 在这里编写断言,验证代码的正确性
// ...
}
}
```
在上面的示例代码中,我们首先创建了一个FileCleanRunnable类的实例fileCleanRunnable,并将需要清理的目录传递给它。然后在setUp方法中初始化该实例。
在testCleanDir方法中,我们调用了fileCleanRunnable的run方法,这样就可以执行清理逻辑。然后,在这个方法中,我们需要编写断言来验证代码的正确性。具体的断言逻辑取决于您的代码实现和测试需求。
希望这可以帮助您编写单元测试。
相关问题
java.lang.NullPointerException: uninitialized homeList at java.util.Objects.requireNonNull(Objects.java:228) at com.zte.ums.cnms.pm.datafileuploadmanager.ranme.clean.service.PMHomes$1.getHomes(PMHomes.java:42) at com.zte.ums.cnms.pm.datafileuploadmanager.ranme.clean.FileCleanService.getOmmParentDirs(FileCleanService.java:293) at com.zte.ums.cnms.pm.datafileuploadmanager.ranme.clean.FileCleanService.getCleanDirList(FileCleanService.java:210) at com.zte.ums.cnms.pm.datafileuploadmanager.ranme.clean.FileCleanService.cleanLocalMeAndOMMDirs(FileCleanService.java:183) at com.zte.ums.cnms.pm.datafileuploadmanager.ranme.clean.FileCleanService.cleanALLDir(FileCleanService.java:106) at com.zte.ums.cnms.pm.datafileuploadmanager.ranme.clean.FileCleanService$$Lambda$539/0x00000000210b5400.run(Unknown Source) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:826)
这是一个空指针异常,发生在 com.zte.ums.cnms.pm.datafileuploadmanager.ranme.clean.service.PMHomes 类的第 42 行。该行代码调用了 Objects.requireNonNull 方法,要求传入的 homeList 参数不能为 null,但实际上该参数为 null,因此抛出了异常。你需要检查 PMHomes 类中对 homeList 的初始化,确保其不为 null。
org.mockito.exceptions.misusing.UnfinishedStubbingException: Unfinished stubbing detected here: -> at com.zte.ums.cnms.pm.datfileupload.ranomm.clean.CleanTaskPollServiceTest.testInit(CleanTaskPollServiceTest.java:66) E.g. thenReturn() may be missing. Examples of correct stubbing: when(mock.isOk()).thenReturn(true); when(mock.isOk()).thenThrow(exception); doThrow(exception).when(mock).someVoidMethod();
这是一个Mockito框架的异常,通常是因为在测试中使用了Mockito的stubbing功能,但是stubbing没有完成或者没有正确完成。这个异常的信息会告诉你在哪个地方出错了,比如在这个例子中是在CleanTaskPollServiceTest的testInit方法的第66行。
要解决这个问题,你需要检查测试代码中的Mockito stubbing部分,看看是否有stubbing没有完成或者没有正确完成。你可以使用正确的stubbing语法,比如使用thenReturn()来返回一个值,或者使用thenThrow()来抛出一个异常。如果是void方法,则可以使用doThrow()方法来抛出异常。确保每个stubbing都被正确地完成。
阅读全文