我在 Maven2 单元测试中有一些令人困惑的行为。以下测试代码在 Eclipse 和 Maven2 中运行时会产生不同的结果:
File f = new File( JUnitConstants.TEST_FILE );
File root = new File( "." );
Log.info( "File Info:" );
Log.info( f.toString() + (f.exists() ? " exists" : " doesn't exist") );
Log.info( f.getAbsoluteFile().toString() + (f.getAbsoluteFile().exists() ? " exists" : " doesn't exist") );
Log.info( root.toString() + (root.exists() ? " exists" : " doesn't exist") );
Log.info( root.getAbsoluteFile().toString() + (root.getAbsoluteFile().exists() ? " exists" : " doesn't exist") );
在 Eclipse 中,一切都存在并且单元测试运行良好。在 maven 中, f.exists() 方法返回 false;所以它认为该文件不存在!这是 maven 运行测试的输出:
2013-01-10 09:50:51,737 [main] INFO - File Info:
2013-01-10 09:50:51,737 [main] INFO - target\test-classes\test\test.img doesn't exist
2013-01-10 09:50:51,737 [main] INFO - C:\Users\me\code\HEAD\modules\project\target\test-classes\test\test.img exists
2013-01-10 09:50:51,737 [main] INFO - . exists
2013-01-10 09:50:51,737 [main] INFO - C:\Users\me\code\HEAD\modules\project\. exists
所以,文件存在,根目录是我所期望的,但是为什么Java在使用相对路径时会认为文件不存在?
我在 Windows 7 64 位;使用 JDK 1.6_38 32 位。