0

私は Java コースのティーチング アシスタントです。私の仕事の一部は、毎週約 100 個の Java プログラミング課題を採点することです。それぞれの課題は、3 ~ 5 個のスタンドアロン Java プログラムで構成されています。学生には、各問題の骨格フレームワーク (パッケージ/クラス/メソッドの名前が同一になります) が提供され、メソッドのロジックを入力するだけで済みます。

おそらくいくつかのスクリプトと組み合わせたJUnit(または同様のフレームワーク)を使用して、そのようなすべての送信の正確性を検証する最良の方法は何でしょうか? 先に進む前に、システムを実際にセットアップするためのより良いアプローチがあるかどうかを知りたかったのですが、テストケース (および対応するクラス/メソッド名) を変更するだけで、すべてのセットを実行できるようになります。割り当て?

これを実行できるフレームワークへのポインタを主に探していますが、実装されたフレームワークの詳細なソリューション/同様のインスタンスを歓迎します!

4

2 に答える 2

1

私は転覆を介してそれを行うかもしれないと思います。割り当てごとに別のディレクトリ。学生は準備ができたらチェックインします。これにより、JUnit テストが実行されます。

自分でコードを書かずに済むかどうかはわかりません。単体テストでは、実行しているコードを把握してから実行する必要があります。単体テストで実行するか、ジェンキンに実行させるかはわかりませんが、より良いでしょう。

于 2013-09-03T21:58:42.910 に答える
1

すべての学生が同じパッケージ/クラスおよびメソッド名を持っているためです。メソッドをテストする JUnit クラスを作成するのは非常に簡単です。あなたがする必要があるのは、各生徒のクラスをフックする方法を理解することだけです.

すべてのコードを制御するのはあなたなので、ファクトリ メソッドまたは既知のコンストラクターを含めて各生徒の実装のインスタンスを作成することをお勧めします。Google Guice のような依存性注入フレームワークを使用して作成を処理することも可能かもしれません。

私は試したことはありませんが、Jukitoは有望なようです。Guice を使用して単体テストに直接挿入します。ただし、最近リポジトリを移動し、wiki リンクをまだ更新していないようです (これは、少なくともコード例を含む古いプロジェクト ページです)。

@RunWith(JukitoRunner.class)
public class Project1Test{
    @Inject
    Project1 studentImplementation;

    @Test
    public void testMethod1(){

       //...
    }

    @Test
    public void testMethod2DoesntOverflow(){
        //...
    }
    //...
 }

}

すべての要件を満たし、すべてのテストに合格するかどうかを確認できるように、提出する前に学生が自分でテストを実行する方法を用意することをお勧めします. (もちろん、テストの独自のコピーを実行して、学生がテストを変更しないようにして、何があっても常に合格するようにします)

それがうまくいかない場合は、何らかの検索/置換を実行して学生の実装に貼り付け、再コンパイルしてコードを何度も実行するスクリプトをいつでも作成できます。

于 2013-09-04T00:37:30.183 に答える