Тест для созданного файла со Споком в Грейл
Вопрос
У меня есть задача, которая генерирует изображение, поэтому я хочу написать тест для него, что сравнивает этот бинарный рисунок с помощью рисунка , ранее генерируемой в папке
def setupSpec() {
project = ProjectBuilder.builder().build()
generatePicTask = project.tasks.create(SomePlugin.GENERATE_PIC_TASK_NAME, GeneratePicTask)
}
def 'create Picture test'() {
when:
File fileName = new File("Info")
then:
generatePicTask.createPicture(fileName)
expect:
fileName.exists()==true
}
.
Но есть ошибка, что
C:\Users\User\AppData\Local\Temp\gradle1393280218367058727projectDir\build\Info.PNG
(The system cannot find the path specified)
.
Изображение генерируется в закрытии действия в задаче
Объект проекта является фиктивным проектом, поэтому я не знаю, даже он был выполнен.Как я могу это исправить?
Решение
Я вижу 3 проблемы с вашим текущим подходом:
Ваш тест не должен полагаться на текущий рабочий каталог.Поэтому вместо того, чтобы создавать такой файл:
File fileName = new File("Info")
.
Используйте правило временного палочка Junit.посмотри на с использованием E.g. http://garygregory.wordpress.com/2010/01/20/junit-tip-use-rules-to-manage-temporary-files-andofolders/ для более подробной информации
Кажется, задача GeneratePictask не генерирует каталог «Build»
Убедитесь, что выходной каталог (исходная папка созданного изображения существует).Вы можете использовать аннотации Gradle E.g.@Ouputdirectory, чтобы поси позаботиться об этом.В противном случае, прежде чем генерировать свое изображение сделать что-то вроде «filename.parentfile.mkdirs»
Вообще способ пойти - это разделить конфигурацию вашей задачи и выполнения задач:
generatePicTask.setPicture(fileName)
generatePicTask.create() // your @TaskAction annotated method
.
ура, Рене