Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将文件从单元测试保存到项目树_Java_Eclipse_Unit Testing_Maven_Junit - Fatal编程技术网

Java 将文件从单元测试保存到项目树

Java 将文件从单元测试保存到项目树,java,eclipse,unit-testing,maven,junit,Java,Eclipse,Unit Testing,Maven,Junit,在单元测试中,作为一个副作用,我正在为GUI的各个部分创建屏幕截图。 我想在编译文档时使用这些屏幕截图 因此,我想将它们保存到源代码树中的一个目录中 在运行junit测试时,是否有可靠的方法获取源目录根 如果没有,我如何确保在使用eclipse和maven时,单元测试以cwd=project root运行?无论是在eclipse上执行测试还是在使用maven执行测试,如果在创建文件时未指定路径,它将在project root目录下自动创建 因此,如果您指定相对文件夹,您的文件将转到该文件夹: p

在单元测试中,作为一个副作用,我正在为GUI的各个部分创建屏幕截图。 我想在编译文档时使用这些屏幕截图

因此,我想将它们保存到源代码树中的一个目录中

在运行junit测试时,是否有可靠的方法获取源目录根


如果没有,我如何确保在使用eclipse和maven时,单元测试以cwd=project root运行?

无论是在eclipse上执行测试还是在使用maven执行测试,如果在创建文件时未指定路径,它将在project root目录下自动创建

因此,如果您指定相对文件夹,您的文件将转到该文件夹:

public class TestFileCreation {

@Test
public void testFileCreation() throws IOException {
    File f = new File("src/main/resources/hello.txt");
    OutputStream ostream = new FileOutputStream(f);
    String data = "Hello there !";
    ostream.write(data.getBytes());
    ostream.close();
}
}

将在$PROJECT/src/main/resources内创建一个文件


希望我的答案对你有所帮助

你可以根据你所在的班级位置。这里建议的解决方案是使用肯定位于类路径中的类。然后可以使用
class.getResource(“”
)。范例

public class ResouceRoot {

    public static String get() {
        String s = ResouceRoot.class.getResource("").toString();
        if (s.startsWith("jar:")) {
            s = s.replace("jar:", "").replaceAll("!.*", "");
        } else {
            s = s.replaceAll("classes.*", "classes");
        }
        File f = new File(s.replace("file:", ""));
        return f.getParentFile().getParentFile().getAbsolutePath();
    }

    public static void main(String[] args) throws IOException {
        System.out.println(get());
    }
}

(如果netbeans项目是从netbeans或通过
java-jar…
)启动的,那么这段代码将为netbeans项目提供base dir)

谢谢,我已经选择了这个方向。我正在检查目录是否存在,以确保我位于正确的位置。