在单元测试中,作为一个副作用,我为GUI的各个部分创建了屏幕截图。我想在编译文档时使用这些屏幕截图。
因此,我希望将它们保存到源码树中的一个目录中。
在运行junit测试时,有没有什么可靠的方法来获取源代码目录的根目录?
如果不是,当使用eclipse和cwd=project时,如何确保单元测试使用maven根目录运行?
发布于 2013-11-20 22:41:08
无论是在eclipse上执行测试,还是使用maven执行测试,如果在创建文件时没有指定路径,它都会自动在项目根目录下创建。
因此,如果您指定了一个相对文件夹,您的文件将放在该文件夹中:
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中创建一个文件。
希望我的回答能有所帮助
发布于 2013-11-21 00:36:58
你可以根据你的类的位置。这里提出的解决方案是使用类路径中肯定会出现的类。然后你就可以使用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项目的基本目录)
https://stackoverflow.com/questions/20098733
复制相似问题