0

Rhino を使用して JavaScript を Java コードに埋め込みます。JavaScript では、JUnit 3 のクラスである TestCase のサブクラスのインスタンス化に失敗しましたが、TestCase のスーパークラスである Assert のサブクラスのインスタンス化には成功しています。
以下は、これを示すコードです。

package com.example.test;

import junit.framework.Assert;
import junit.framework.TestCase;
import org.mozilla.javascript.*;

public class MyFirstJavaProgram {
    public static void main(String[] args) {
        try {
            Context cx = Context.enter();
            Scriptable scope = new ImporterTopLevel(cx);
            String js = new String();
            js += "importPackage(Packages.com.example.test);";
            js += "importClass(java.lang.System);";
            js += "var testCaseClass = new TestCaseClass();";
            js += "System.out.println(\"testCaseClass: \" + testCaseClass);";
            js += "var assertClass = new AssertClass();";
            js += "System.out.println(\"assertClass: \" + assertClass);";
            cx.evaluateString(scope, js, "<cmd>", 1, null);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

class TestCaseClass extends TestCase { 
    public TestCaseClass() {} 
}
class AssertClass extends Assert { 
    public AssertClass() {} 
}

出力は次のとおりです。

testCaseClass: null(com.example.test.TestCaseClass)
assertClass: com.example.test.AssertClass@17943a4

なぜ私がこれをしているのですかと聞かないでください。

お待ちいただいてありがとうございます。

4

1 に答える 1

0

表示されている文字列:

null(com.example.test.TestCaseClass)

名前new TestCase().toString()のないテストの文字列表現です。このコードは機能しています。

試す:

class TestCaseClass extends TestCase { 
    public TestCaseClass() {
        super("Named Test");
    } 
}

これを明確にするために。

于 2013-08-14T12:02:47.313 に答える