为什么可以'我在Rhino上使用JavaScript实例化了TestCase的一个子类
why can't I instantiate a subclass of TestCase using JavaScript on Rhino
我使用Rhino在Java代码中嵌入JavaScript。在JavaScript中,它未能实例化TestCase的一个子类,这是JUnit3中的一个类,但它确实成功地实例化了Assert的一个子类别,这是TestCase的超类别
下面是一些代码来显示这一点:
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
请不要问我为什么要这么做,我们只能说我必须这么做。
谢谢你的耐心。
您看到的字符串:
null(com.example.test.TestCaseClass)
正是new TestCase().toString()
,未命名测试的字符串表示;这个代码正在工作。
尝试:
class TestCaseClass extends TestCase {
public TestCaseClass() {
super("Named Test");
}
}
以使这一点更清楚。
相关文章:
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- 如何在用户输入时实例化数组
- 在requirejs中共享实例化对象
- Mongoose TypeError:实例化模式类型的对象时,对象不是函数
- Angular重命名模块后未能实例化模块
- Backbone relational无法实例化两个RelationalModel对象
- 我应该如何用javascript实例化这个日期
- AngularJS出错-无法实例化模块
- 谷歌地图重叠MarkerSpiderfier实例化问题
- 未捕获错误:由于,[$injector:moduler]未能实例化模块polmgr
- ngRoute不是因果报应实例化的
- JavaScript 中的动态实例化
- 在文本框上绑定谷歌地点自动完成,而无需实例化谷歌地图
- UI5 路由不实例化视图
- 在 JavaScript 中,当我们实例化派生对象时,原型的函数隐藏在哪里
- 仅在需要时实例化聚合物元素
- 角度 JS 控制器未实例化
- 如何理解“当类实例化时,JavaScript静态方法也是不可调用的”
- 在 Typescript 中实例化对象,遵循松散耦合
- 为什么可以'我在Rhino上使用JavaScript实例化了TestCase的一个子类