Как вы тестируете ваш графический интерфейс Cocoa? - PullRequest
9 голосов
/ 13 февраля 2009

Я хотел бы написать несколько тестов для GUI моей программы Cocoa.

Есть ли какая-нибудь хорошая среда тестирования GUI для приложений Какао? Единственное, что я нашел, это Squish , что на 2,400 € намного превышает мой бюджет ...

Есть идеи? Как вы тестируете свой графический интерфейс Cocoa?

Ответы [ 5 ]

8 голосов
/ 01 июня 2009

Это зависит от того, что вы подразумеваете под «тестированием графического интерфейса какао».

Если вам нужны такие инструменты, как старый Виртуальный пользователь , включенный в MPW, то таких инструментов мало; Вы будете смотреть на такие инструменты, как Squish и Eggplant.

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

В своем блоге я написал несколько примеров того, как сделать это специально с Cocoa, один для тестирования пользовательских интерфейсов, созданных с помощью target-action , и один для тестирования пользовательских интерфейсов построено с какао привязками . (Помните, конечно, что эти две технологии не являются исключительными: если вы хотите сделать перетаскивание в табличном представлении, управляемом через привязки Какао, у вас также будет источник данных и, возможно, делегат, подключенный через target-action .)

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

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

4 голосов
/ 13 февраля 2009

Я бы посоветовал вам взглянуть на Google Toolbox для Macintosh . Среди прочих приятных плюсов - очень хороший набор дополнений к состоянию и тестированию рендеринга для NSView и CALayers. В своих модульных тестах вы утверждаете, что состояние вида / слоя или отображаемого изображения соответствует сохраненному (по имени) шаблону. Если шаблон не существует в тестовом пакете или не соответствует сохраненной версии, для проверки создается новое закодированное состояние или визуализированный TIFF. GTM предоставляет категории для NSView и CALayer для кодирования и рендеринга состояния. Очевидно, что вы можете переопределить эти категории в ваших собственных подклассах NSView или CALayer для кодирования соответствующего состояния (используя протокол NSCoder) или рендеринга.

Он также позволяет (легко) программно отправлять ключевые события и запускать цикл выполнения с помощью модульных тестов, а также поддерживает модульное тестирование как на OS X, так и на iPhone.

2 голосов
/ 10 мая 2011

Я создал пакет Python с открытым исходным кодом, который использует API доступности Apple, в частности, для создания классической библиотеки автоматизации графического интерфейса, которая дает вам представление о графическом интерфейсе Cocoa и взаимодействие с ним. Домашняя страница PyATOM

1 голос
/ 13 февраля 2009

Вы можете проверить и рассмотреть Eggplant от TestPlant (формально Redstone Software) на http://www.testplant.com/.

Здесь - статья, которую Apple опубликовала в прошлом году.

0 голосов
/ 14 февраля 2009

В последнем подкасте CocoaCast есть интервью с Ианом Дисом, автором "Скриптового тестирования GUI с Ruby". Вы можете узнать больше на CocoaCast

...