文章作者 100test 发表时间 2007:10:10 13:06:57
来源 100Test.Com百考试题网
JUnit 单元测试学深入人心的同时,也发现它对用户交互测试无能为力:
TestCase 允许测试人员作动态的修改
可以在Test Case 中实现一个测试参数输入功能(UI 或参数配置文件)来解决这个问题,但实现这些功能的代价与重复工作量会很大。
TestCase 可以方便地重复使用、组合、保存
不是所有所有测试环境下,都容许打开一个重量级的 Java IDE 编写有严格规范的 Java 代码。这就是脚本语言受欢迎的原因。
BeanShell 可以较好解决以上问题。
bsh.Interpreter 是beanShell 的主要接口。
以下可以实现一个简单的Java Shell: public class TestInt { public static void main(String[] args) { bsh.Interpreter.main(args). } } 结果: |
BeanShell 2.0b4 - by Pat Niemeyer ([email protected]) bsh % System.out.println("Hello BeanShell"). Hello BeanShell bsh % |
你也可以用以下代码实现同样的功能,代码中可以比较明显地看出其结构: |
public static void main(String[] args) { Reader in = new InputStreamReader( System.in ). PrintStream out = System.out. PrintStream err = System.err. boolean interactive = true.. bsh.Interpreter i = new Interpreter( in, out, err, interactive ). i.run().//线程在这里阻塞读System.in } |
public static void main(String[] args) throws Throwable { Reader in = new InputStreamReader( System.in ). PrintStream out = System.out. PrintStream err = System.err. boolean interactive = true.. bsh.Interpreter i = new Interpreter( in, out, err, interactive ). Collection theObjectReadyForShellUser = new ArrayList(). theObjectReadyForShellUser.add("Str1"). i.set("myObject", theObjectReadyForShellUser). i.run(). } |
用户的UI:
BeanShell 2.0b4 - by Pat Niemeyer ([email protected]) bsh % System.out.println( myObject.get(0) ). Str1 bsh % |
Shell的上下文在测试中特别有用。想一下,如果将上面的“theObjectReadyForShellUser”换成一个预先为测试用户生成的RMI本地接口存根,由测试用户调用相应的存根方法。这可应用于动态测试,也可以应用于系统的远程管理。
public static void main(String[] args) throws Throwable { Reader in = new InputStreamReader( System.in ). PrintStream out = System.out. PrintStream err = System.err. boolean interactive = true.. bsh.Interpreter i = new Interpreter( in, out, err, interactive ). //show a dialog for user to input command. String command = JOptionPane.showInputDialog( "Input Command(s)" ).
i.eval( command ).//Run the command } |
相关文章
试问:动态语言是否将会挽救Swing?
用事实说话!AJAX应用程序开发七宗罪
利用HSQLDB进行Hibernate单元测试
J 牵手JSF打造完美的Web应用
Bea hell在人工测试与管理中的应用
简单介绍A ectJ类的名称模式
接口中定义的常量的访问方法
使用ODBC接口访问MySQL
100Test:经济师工商管理试题库汇总
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛