Тестирование графического поколения с JUnit

Я использую Graphics2D Java для генерации графического представления графика. Я также использую ImageIO для записи файла PNG. (ImageIO.write(image, "png", out);)

Я задаюсь вопросом, как должен я писать тесты JUnit, чтобы протестировать, является ли сгенерированная графика тем, что ожидается. Я мог предварительно генерировать файлы PNG, но что, если шрифт несколько отличается на другой машине?

8
задан PeWu 3 August 2010 в 20:48
поделиться

2 ответа

Вы можете попробовать протестировать конкретные известные особенности вывода, например:

  • Есть белый пиксель в (100,100)?
  • Полностью черная граница?
  • Является ли изображение ожидаемого размера?

И / или вы могли бы написать тесты для некоторых «совокупных свойств», которые допускают некоторую нечеткость результатов:

  • Соответствует ли изображение как минимум на 90% эталонному изображению? (чтобы учесть разные шрифты, различия в сглаживании и т. д.)
  • Совпадает ли наиболее распространенный цвет изображения с цветом фона?
1
ответ дан 5 December 2019 в 23:13
поделиться

Вы можете считать все значения RGB сгенерированных изображений в массив и сравнить этот 2D-массив с массивом, представляющим предварительно сгенерированное изображение, если вы действительно конкретны в отношении полного изображения.

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

1
ответ дан 5 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: