Вопрос

У меня есть задача, которая генерирует изображение, поэтому я хочу написать тест для него, что сравнивает этот бинарный рисунок с помощью рисунка , ранее генерируемой в папке Resource .

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)
.

Изображение генерируется в закрытии действия в задаче GeneratePictask .

Объект проекта является фиктивным проектом, поэтому я не знаю, даже он был выполнен.Как я могу это исправить?

Это было полезно?

Решение

Я вижу 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
.

ура, Рене

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top