Как автоматизировать юнит-тестирование в Squeak - PullRequest
2 голосов
/ 17 января 2010

Я проверяю домашние задания Squeak, предоставленные моими учениками. Я написал тестовый пример SUnit с кучей тестов, и теперь я хочу запустить их для всех представлений.

Я бы хотел как-то автоматизировать - будь то внутри Squeak или с помощью сценариев оболочки - процесс загрузки представления учащегося, запуска тестового примера и сохранения результатов в каком-либо формате.

Я столкнулся с двумя основными проблемами:

  1. Я не знаю, как взаимодействовать со Squeak из оболочки - например, Как я могу загрузить какое-то изображение, а затем запустить набор конкретных команд там? Я искал примеры в Интернете, но даже не смог загрузить изображение.
  2. Я пытался сохранить все внутри Squeak, но оказалось, что загрузка исходного файла, который содержит существующие классы, не только переопределяет существующие классы (что нормально), но также делает все предыдущие ссылки на эти классы недействительными, что делает меня неспособным повторите тесты.

Дополнительная информация: все учащиеся представили исходный файл (не файл изображения) с одним или несколькими классами внутри, причем все материалы содержат хотя бы один класс с определенным именем (скажем, "SubmissionClass").

1 Ответ

3 голосов
/ 17 января 2010

Возможно, вы захотите проверить сценарии сборки, которые Янни Чиу первоначально разместил в списке рассылки Pharo и которые я расширил и опубликовал на GitHub http://github.com/renggli/builder.

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

  • http://github.com/renggli/builder/blob/master/build.sh (строка 111) показывает, как запустить виртуальную машину Pharo (или Squeak) из оболочки.
  • Переменная $OUTPUT_SCRIPT содержит полный путь к скрипту, который загружает код и запускает тесты. Это объединение (строка 105-108) одного или нескольких сценариев в http://github.com/renggli/builder/tree/master/scripts/.
  • Например, testrunner.st загружает средство запуска тестов, которое затем используется сценариями *-tests.st для запуска реальных тестов и создания отчета.
  • Убедитесь, что последняя строка вашего скрипта закрывает изображение, например, добавив SmalltalkImage current snapshot: false andQuit: true.
  • Подробнее см. http://github.com/renggli/builder/blob/master/README.
...