сохранить файл из модульного теста в дереве проекта

97
7

В модульных тестах в качестве побочного эффекта я создаю скриншоты для различных частей графического интерфейса. Я хочу использовать эти скриншоты при компиляции документации.

Поэтому я хочу сохранить их в каталог в дереве источников.

Есть ли надежный способ получить корневой каталог исходного кода при запуске теста junit?

Если нет, как я могу убедиться, что модульные тесты выполняются с помощью cwd = root проекта при использовании eclipse и при использовании maven?

спросил(а) 2013-11-20T17:33:00+04:00 6 лет, 10 месяцев назад
1
Решение
56

если вы выполняете тесты на 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-20T17:41:00+04:00 6 лет, 10 месяцев назад
41

Вы можете основываться на своем классе. Предлагаемое решение здесь - использовать класс, который, несомненно, будет в 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...)

ответил(а) 2013-11-20T19:36:00+04:00 6 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема