Below enum helps me avoid hard-coded directory values at different places in the JUNIT test cases. This seems to work in a development environment inside the IDE on a WINDOW's box.
As soon as I put this code on a LINUX box, the JUNIT classes cannot find the directories. The Files.exists(sourcePath) returns false. The same code had returned true on the IDE (windows). Any pointers on whats going wrong here?
public enum DIRECTORY {
OUTPUT("resources/output"), RESOURCE("resources/resource"), PROCESSED_OUTPUT(
"resources/output/resources/resource"), EXPLODED_WEBAPPS(
"temp/webapps"), WEBAPPS("webapps");
private String _name;
private DIRECTORY(String _name) {
this._name = _name;
}
public String getDirectoryName() {
return _name;
}
}
Sample usage code of the enum
private void restore_csv_files() {
Path _processed_output = Paths.get(DIRECTORY.PROCESSED_OUTPUT
.getDirectoryName());
Path resource = Paths.get(DIRECTORY.RESOURCE.getDirectoryName());
FileUtility.copy_files(_processed_output, resource);
FileUtility.delete_files(_processed_output);
FileUtility.delete_directory(_processed_output);
}
File Util class
public static void copy_files(Path sourcePath, Path targetPath) {
if (Files.exists(sourcePath) && Files.exists(targetPath)) {
try {
Files.walkFileTree(sourcePath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(final Path file,
final BasicFileAttributes attrs) throws IOException {
Files.copy(file,
targetPath.resolve(sourcePath.relativize(file)));
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
System.out.println("Either Source or Target path does not exist");
}
}
Basically on the windows this thing work, but on the linux box, get a sysout "Either Source or Target path does not exist" (refer above code for sysout)
Sample Exception
java.nio.file.NoSuchFileException: webapps/web.war
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
at com.temp.utils.FileUtility.alter_date_time_of_file(Unknown Source)
at com.temp.webengine.WebEngineTest.test_web_app_updated_true(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)