我在Junit 4课程中有这样的代码:
Path dir = Paths.get("/tmp/testDir");
dir.toFile().mkdir();
WatchService watchService = FileSystems.getDefault().newWatchService();
dir.register(watchService, StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE);
当我尝试跳过Eclipse Helios调试透视图中的最后一个语句时,相关的线程表明它是“Stepping”并且永远不会返回。为什么呢?
当我尝试使用Maven命令“mvn test”执行Junit类时,同样的行为(挂在Path.register()调用上)显然也会发生(至少那个假设与我的类失败一致)见)。
这是我的JVM:
$ $JAVA_HOME/bin/java -version
java version "1.7.0_02"
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)
答案 0 :(得分:0)
冒着回答我自己的问题的风险,我已经学习了关于Path.register()方法的以下内容:1)如果JUnit测试中的所有其他线程都被挂起,它显然不会返回; 2)它执行速度不足以捕获JUnit测试创建的第一个文件。因此,Eclipse调试挂起并且Maven测试在完全相同的时间点失败 - 但原因各不相同。