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 ビットを使用。