Я пишу несколько тестов для кода Swift моего приложения Mac.
Один из случаев, которые мне нужно протестировать:
имеет NSAttributedString с вложениями
каждое вложение создается с помощью растрового изображения (1x или 2x), раскрашенного с помощью кода с использованием пользовательского цвета
нарисуйте приписанную строку иубедитесь, что выходные данные идентичны эталонному изображению
Другой тестовый пример может быть:
с NSView
сделать некоторые вещи в представлении
есть2 проблемы:
В зависимости от оборудования Mac, на котором выполняются тесты, Cocoa будет работать с изображениями 1x или 2x. Это заставляет иметь 2 эталонных изображения для каждого теста, что, очевидно, является непрактичным решением.
Опять же, в зависимости от аппаратного обеспечения Mac, сгенерированные объекты NSImage будут принимать цветовой профиль экрана,Это делает тесты неудачными, если они запускаются на другом Mac или на том же Mac, но подключены к другому дисплею.
Я попытался углубиться и использовать функции CG * для выполнения своих рисунков, предоставляя размер изображения и цветового пространства. Тесты, написанные таким образом, стабильны, но я не могу заменить весь код NS * на CG *, потому что это будет означать, что тестирование интеграции с классами NS * не будет, что, в конце концов, это то, что мне нужно протестировать.
Было бы неплохо запустить тесты в среде с виртуальным экраном, так что классы NS * будут вести себя всегда одинаково, но я не могу найти, если и как это возможно.
Итак, последний вопрос: как можно протестировать код, который включает в себя классы NS * и который создает растровые изображения?