-5

クラスのコードを含む文字列を持つクラスを動的に作成する方法や、以前に作成した既存のクラスに同じ方法でメソッドを追加する方法はありますか?

ユース ケース シナリオ: 学生は、IDE を使用せずにいくつかのメソッドを作成する必要がある試験を行っています (したがって、学生は単純な文字列を提出します)。私が達成したいのは、彼の提出物に対して簡単な単体テストを実行する方法です。たとえば、教授から提供された単体テストを実行するためのクリック可能なボタン。

下手な英語で申し訳ありませんが、よろしくお願いします!

4

2 に答える 2

0

学生は、バイト コードではなく、Java ソース コードを提出します。Java ソース コードは、クラスローダでロードする前に、Java コンパイラを使用してバイト コードにコンパイルする必要があります。プログラムでコンパイラを呼び出すことでこれを行うことができます (この回答を参照してください)。.class実行時にこの新しいファイルのバイト コードをロードするには、次のようにします。

class NetworkClassLoader extends ClassLoader {
     String host;
     int port;

     public Class findClass(String name) {
         byte[] b = loadClassData(name);
         return defineClass(name, b, 0, b.length);
     }

     private byte[] loadClassData(String name) {
         // load the class data from the connection
          . . .
     }
 }

ここからの例、ありがとう@Robert)。

インスタンスを取得したら、それをテスト アプリにフィードして、いくつかのテストを実行し、結果を得ることができます。

サブミットされたクラスに、定義したインターフェイスを実装させ、そのインターフェイスに対してテスト コードをテストさせるのが最も簡単です。そうすれば、テストは事前にコンパイルされ、実行時に動的にコンパイルおよびインスタンス化された送信を引き続き処理できます。

于 2016-06-22T08:34:14.350 に答える
0

KIT (ドイツのカールスルーエにある大学) は、学生のプログラミング タスクをテストするためのツールを作成しました。こちらをご覧いただけますでしょうか

于 2016-06-22T08:26:31.203 に答える