Maven Unit Test FileNotFound Ошибка - PullRequest
       12

Maven Unit Test FileNotFound Ошибка

1 голос
/ 31 января 2012

Я создал проект Maven, который включает в себя «запись» файла CSV по завершении.

Я создал тестовый класс для создания файла отчета «mock / test», но при запуске моего модульного теста, при использовании команд «mvn package» или «mvn test», я получаю эту ошибку:

28 Jan 2012 11:17:51,499 main DEBUG main.executors.ReportsExecutor:111  - Finished processing documents in 0.0 hours
28 Jan 2012 11:17:51,516 main ERROR main.utilities.FileWriterObject:279  - writeToADelimitedFile: reports/reportResults_1_28_2012_11.17.515.csv (No such file or directory) APPEND VALUE: false
28 Jan 2012 11:17:51,517 main ERROR main.executors.ReportsExecutor:170  - java.io.FileNotFoundException: reports/reportResults_1_28_2012_11.17.515.csv (No such file or directory)
java.io.FileNotFoundException: reports/reportResults_1_28_2012_11.17.515.csv (No such file or directory)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:102)
    at java.io.FileWriter.<init>(FileWriter.java:61)
    at 

Имейте в виду, что вывод "APPEND VALUE: false" является просто оператором отладки, сообщая мне, что логический параметр "append" в конструкторе FileWriter имеет значение false, чтобы "создать" новый файл с соответствующим файлом имя.

Теперь в производстве все работает просто отлично. Это просто мои модульные тесты, которые не работают. Есть ли какая-то папка «root test», которую я не настраиваю?

Я довольно зеленый для Мейвена. Любая обратная связь с благодарностью!

Ответы [ 2 ]

1 голос
/ 31 января 2012

Maven устанавливает свойство под названием "basedir", которое удобно использовать в модульных тестах.Я написал быстрый модульный тест, и он работает для меня как в Maven, так и в Eclipse:

public class ReadAndWriteToTargetDirectoryTest extends Assert {

    public static final String TEST_STRING = "Testing";

    @Test
    public void testReadWrite() {
        File file = new File(System.getProperty("basedir", ".") + File.separator + "target", "mavenTest.txt");

        try {
            FileWriter writer = new FileWriter(file);
            System.out.println("File: " + file.getCanonicalPath());
            writer.write(TEST_STRING);
            writer.close();

            BufferedReader reader = new BufferedReader(new FileReader(file));
            String line = reader.readLine();
            reader.close();
            assertTrue(line.equals(TEST_STRING));
        } catch (IOException e) {
            fail(e.getMessage());
        }
    }
}

При использовании System.getProperty (...) для получения системного свойства "basedir" обязательно установитепараметр по умолчанию "."так что вы можете запустить модульный тест в Eclipse:

System.getProperty("basedir", ".")
0 голосов
/ 02 февраля 2012

Похоже, я не могу сказать Maven запускать свои тесты "относительно" каталога, кроме того, из которого я запускал команду "mvn test".

Так что, если я пытаюсь записать файл в каталог, «относительный» к корневому каталогу проекта, мне нужно иметь свой класс Java, то есть тот, который выполняет запись, проверьте, чтобы убедиться, что соответствующий каталог существует до того, как пишу это.

Первоначально причина, по которой я этого не делал, заключается в том, что у меня есть файл ant-deploy.xml, в котором собраны необходимые каталоги, необходимые для моей реализации, то есть цель / журналы, цель / ресурсы и т. Д. Поэтому, когда я запускаю мое развернутое приложение, у меня нет этой проблемы.

Я надеялся, что смогу сказать maven, то есть "mvn -Dbase.dir = target test", но, очевидно, я не могу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...