Java: модульное тестирование манипуляций с изображениями - PullRequest
7 голосов
/ 10 сентября 2010

У меня есть метод, который работает с изображением. Метод берет одно изображение, выполняет некоторые манипуляции с ним и возвращает другое изображение:

public BufferedImage manipulateImage (Image image) {
    ...
}

Я не уверен, есть ли лучшие практики написания юнит-тестов для таких действий. Какие характеристики изображения должны быть проверены в первую очередь? Как проверить, не испортилось ли изображение? Например, однажды я столкнулся с проблемой, когда изображения GIF стали инвертированными после чтения их с помощью ImageIO и сохранения обратно.

1 Ответ

5 голосов
/ 10 сентября 2010

Получите исходное изображение (x), запустите преобразование и сохраните обработанное изображение (y), физически убедитесь, что y - это то, что вы хотите проверить. Тогда ваш тест - это F(x) = y, если у вас есть и x, и y в вашем каталоге src/test/resources, вы можете сравнить y с результатами вашего теста.

Вас также может заинтересовать http://pdiff.sourceforge.net/ (C ++ не Java), если вам не нужно проверять на 100% равенство.

Редактировать : также посмотреть этот вопрос - Сравнение изображений - быстрый алгоритм

...