Как сделать надежные тесты растровых изображений, созданных классами NS * Cocoa? - PullRequest
1 голос
/ 05 ноября 2019

Я пишу несколько тестов для кода Swift моего приложения Mac.

Один из случаев, которые мне нужно протестировать:

  1. имеет NSAttributedString с вложениями

  2. каждое вложение создается с помощью растрового изображения (1x или 2x), раскрашенного с помощью кода с использованием пользовательского цвета

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

Другой тестовый пример может быть:

  1. с NSView

  2. сделать некоторые вещи в представлении

есть2 проблемы:

  1. В зависимости от оборудования Mac, на котором выполняются тесты, Cocoa будет работать с изображениями 1x или 2x. Это заставляет иметь 2 эталонных изображения для каждого теста, что, очевидно, является непрактичным решением.

  2. Опять же, в зависимости от аппаратного обеспечения Mac, сгенерированные объекты NSImage будут принимать цветовой профиль экрана,Это делает тесты неудачными, если они запускаются на другом Mac или на том же Mac, но подключены к другому дисплею.

Я попытался углубиться и использовать функции CG * для выполнения своих рисунков, предоставляя размер изображения и цветового пространства. Тесты, написанные таким образом, стабильны, но я не могу заменить весь код NS * на CG *, потому что это будет означать, что тестирование интеграции с классами NS * не будет, что, в конце концов, это то, что мне нужно протестировать.

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

Итак, последний вопрос: как можно протестировать код, который включает в себя классы NS * и который создает растровые изображения?

...