2

生徒から提出されたSqueakの宿題をチェックしています。私はたくさんのテストを含むSUnitテストケースを作成しましたが、今度はすべての提出物でこれらを実行したいと思います。

Squeakの内部からでも、シェルスクリプトを使用してでも、生徒の提出物を読み込み、テストケースを実行し、結果を何らかの形式で保存するプロセスを何らかの方法で自動化したいと思います。

私は2つの大きな問題に遭遇しました:

  1. シェルからSqueakを操作する方法がわかりません。たとえば、画像を読み込んで、そこで特定のコマンドのセットを実行するにはどうすればよいですか。オンラインで例を探していますが、画像を読み込むことすらできませんでした。
  2. すべてをSqueak内に保持しようとしましたが、既存のクラスを含むソースファイルをロードすると、既存のクラスがオーバーライドされるだけでなく(問題ありません)、これらのクラスへの以前の参照がすべて無効になり、再実行できなくなります。テスト。

詳細情報:すべての学生が、1つ以上のクラスを含むソースファイル(画像ファイルではない)を提出しました。すべての提出物には、特定の名前のクラス(たとえば、「SubmissionClass」)が少なくとも1つ含まれています。

4

1 に答える 1

3

Yanni Chiuが最初にPharoメーリングリストに投稿し、私が拡張してGitHubhttp://github.com/renggli/builderに公開したビルドスクリプトを確認することをお勧めします

コードはおそらくあなたのケースには多すぎる機能を提供しますが、それはあなたのタスクでも必要とされるすべての必要なステップを提示します:

  • http://github.com/renggli/builder/blob/master/build.sh(111行目)は、シェルからPharo(またはSqueak)VMを起動する方法を示しています。
  • 変数$OUTPUT_SCRIPTには、コードをロードしてテストを実行するスクリプトへのフルパスが含まれています。これは、 http://github.com/renggli/builder/tree/master/scripts/にある1つ以上のスクリプトの連結(105〜108行目)です。
  • たとえば、スクリプトが実際のテストを実行してレポートを作成するためにtestrunner.st使用するテスト実行者をロードします。*-tests.st
  • スクリプトの最後の行が画像を終了していることを確認してください。たとえば、を追加しSmalltalkImage current snapshot: false andQuit: trueます。
  • 詳細については、 http: //github.com/renggli/builder/blob/master/READMEを参照してください。
于 2010-01-17T10:59:18.217 に答える