首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件从单元测试保存到项目树

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

Stack Overflow用户
提问于 2013-11-20 22:33:59
回答 2查看 297关注 0票数 0

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

因此,我希望将它们保存到源码树中的一个目录中。

在运行junit测试时,有没有什么可靠的方法来获取源代码目录的根目录?

如果不是,当使用eclipse和cwd=project时,如何确保单元测试使用maven根目录运行?

EN

回答 2

Stack Overflow用户

发布于 2013-11-20 22:41:08

无论是在eclipse上执行测试,还是使用maven执行测试,如果在创建文件时没有指定路径,它都会自动在项目根目录下创建。

因此,如果您指定了一个相对文件夹,您的文件将放在该文件夹中:

代码语言:javascript
复制
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中创建一个文件。

希望我的回答能有所帮助

票数 1
EN

Stack Overflow用户

发布于 2013-11-21 00:36:58

你可以根据你的类的位置。这里提出的解决方案是使用类路径中肯定会出现的类。然后你就可以使用class.getResource("")了。示例

代码语言:javascript
复制
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项目的基本目录)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20098733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档