сохранить файл из модульного теста в дереве проекта
В модульных тестах в качестве побочного эффекта я создаю скриншоты для различных частей графического интерфейса. Я хочу использовать эти скриншоты при компиляции документации.
Поэтому я хочу сохранить их в каталог в дереве источников.
Есть ли надежный способ получить корневой каталог исходного кода при запуске теста junit?
Если нет, как я могу убедиться, что модульные тесты выполняются с помощью cwd = root проекта при использовании eclipse и при использовании maven?
если вы выполняете тесты на 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.
Надеюсь, мой ответ поможет
Вы можете основываться на своем классе. Предлагаемое решение здесь - использовать класс, который, несомненно, будет в classpath. Затем вы можете использовать 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...
)