1

コマンドラインから実行可能にするように求められたtestNGフレームワークがあります。テストを実行するためのコードを追加しましたが、コマンドライン実行の一部が実行されるテストクラスに渡されていました。Javaはこれを好まないようです。

私のコード:

    TestListenerAdapter tla = new TestListenerAdapter();
    TestNG testng = new TestNG();

    try
    {
        Class cl = Class.forName(myClass);
        testng.setTestClasses(new Class[] { cl.class });
        testng.addListener(tla);
        testng.run();
    }
    catch (Exception ex)
    {
    ...
    }

変数myClassは、Mainに渡される引数の1つです。

「不明なクラス」の「cl.class」コードでエラーが発生します。

これを行う適切な方法は何でしょうか?

編集:

実際にプロジェクトをビルドすると、返されるエラーは「エラー:シンボルクラスclが見つかりません」です。

4

2 に答える 2

5

問題は、クラス配列にcl.classを配置していることである可能性があります。clはクラスオブジェクトです。試す

testng.setTestClasses(new Class[] { cl });

クラスクラスの詳細については、http://docs.oracle.com/javase/tutorial/reflect/class/classNew.htmlを参照してください

于 2012-10-19T14:50:34.850 に答える
3

行を次のように変更します。

testng.setTestClasses(new Class[] { cl });

構文は、ハードコードされたクラス名からオブジェクトX.classを取得することです。Classこの場合、すでにClassインスタンスが手元にあるので、それを使用してください。

于 2012-10-19T14:51:34.740 に答える