5

私は現在、Java を使用するクラスの教師アシスタントをしています。学生のメソッドが正しいことを確認するためにテストするコードのスニペットを作成しようとしていますが、多くの場合、学生はメソッドを実装することさえしないか、何か間違っていると呼びます。テスト コードを実行すると、コンパイルの問題が発生します。学生が提出したコードをいじらずにテスト コードを実行できるように、実行時にこのエラーをキャッチする方法はありますか?

  • 編集:未解決のコンパイルの問題が実行前にコンパイラによって生成されることを発見しました。これを念頭に置いて、私が上で説明したことを行う方法はありますか?
  • 編集: また、割り当てが構造化される方法を制御できないため、インターフェイスやスタブなどを導入することはできません.
4

4 に答える 4

2

If I were a TA, I would write some unit tests and tell the students to make the test pass. Get them into testing early on.

If the code doesn't compile, it doesn't make sense to detect that at runtime. You can't run if it won't compile.

于 2011-10-25T18:08:57.273 に答える
2

リフレクションを使用すると、メソッドが存在するかどうかを確認し、メソッドを呼び出し、既存のメソッドを繰り返し処理して、生徒のメソッドを見つけることができます。

ファイルから生徒のコードをロードするには、UrlClassLoader クラスを参照してください。

于 2011-10-25T18:14:49.397 に答える
1

コースのオブジェクト指向の部分に入ったようです。割り当てられたすべてのメソッドをスタブアウトしたスーパークラスを作成するのは良い考えかもしれません。次に、学生はそのスーパークラスを拡張してメソッドを実装するだけです。スタブされたものはRuntimeExceptionをスローするだけで、対応する単体テストが失敗します。これにより、特定のメソッドを実装していない学生についてあまり心配することなく、単体テストを作成できるようになります。

于 2011-10-25T18:19:09.377 に答える
1

あなたの質問を理解できれば、学生が実装するインターフェースと実装の正確さの両方を検証しようとしています。リフレクション API を使用すると、クラスが正しい API を実装しているかどうかを判断し、実装している場合はその API を呼び出すことができます。java.lang.Class、java.lang.Method などを見てください。

于 2011-10-25T18:17:38.643 に答える