我正在检查学生提交的 Squeak 作业。我已经编写了一个带有大量测试的 SUnit 测试用例,现在我想在所有提交上运行这些测试。
我想以某种方式自动化 - 无论是从 Squeak 内部还是使用 shell 脚本 - 加载学生提交的内容、在其上运行测试用例以及以某种格式保存结果的过程。
我遇到了两个主要问题:
- 我不知道如何从 shell 与 Squeak 交互 - 例如如何加载一些图像,然后在那里运行一组特定命令?我在网上寻找示例,但甚至无法加载图像。
- 我试图将所有内容保留在 Squeak 中,但事实证明加载包含现有类的源文件不仅会覆盖现有类(这没关系),而且还会使所有以前对这些类的引用变得无效,使我无法重新运行测试。
更多信息:所有学生都提交了一个源文件(不是图像文件),其中包含一个或多个类(class),所有提交的内容至少包含一个具有特定名称的类(class)(例如,“提交类别”)。
最佳答案
您可能想查看 Yanni Chiu 最初在 Pharo 邮件列表中发布的构建脚本,以及我在 GitHub http://github.com/renggli/builder 上扩展和发布的构建脚本。 。
该代码可能为您的案例提供了太多功能,但它提供了您的任务中也需要的所有必要步骤:
- http://github.com/renggli/builder/blob/master/build.sh (第 111 行)展示了如何从 shell 启动 Pharo(或 Squeak)VM。
- 变量
$OUTPUT_SCRIPT
包含加载代码和运行测试的脚本的完整路径。这是 http://github.com/renggli/builder/tree/master/scripts/ 中一个或多个脚本的串联(第 105-108 行)。 . - 例如,
testrunner.st
加载一个测试运行程序,然后由*-tests.st
脚本使用它来运行实际测试并生成报告。 - 确保脚本的最后一行退出图像,例如通过添加
SmalltalkImage current snapshot: false 和Quit: true
。 - 详情请参阅http://github.com/renggli/builder/blob/master/README .
关于unit-testing - 如何在 Squeak 中自动化单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2079057/