为了好玩(也为了在课堂上作为教学工具使用),我正在编写一个类似于JUnitTests的程序。我想用它来对高中生写的代码运行测试。当一个学生编写通过系统获得用户输入的代码时,在使用扫描仪时,我想“劫持”扫描仪来提供我自己预定的用户输入。我有一切工作很好,除了我的愿望,我的扫描仪是一个内部类的自动测试仪。
下面的例子过于简单,但却能理解这一点。
假设一个学生写了这样的代码:
import java.util.*;
public class Practice {
public static void practiceScanners() {
Scanner console = new Scanner(System.in);
System.out.print("Type first name, age, and address >> ");
String name = console.next();
int age = console.nextInt();
String address = console.nextLine();
System.out.println(name + " is " + age + " and lives at" + address + ".");
}
}
public class AutoTester {
public main() {
* use JavaCompiler from ToolProvider to compile Practice.java
* use reflection to invoke Practice.practiceScanners()
* (hopefully) have student code use my Scanner instead of java.util.Scanner
* collect output of running the student code
* compare against expected output
}
//My version of Scanner is an inner class within AutoTester
public class Scanner {
private String script = "Bob 13 42 Maple Drive";
<* implementation not shown *>
}
}
不幸的是,不是这样的。自定义扫描器的类名实际上是autotester.scanner
,您在测试类中定义了它,除了类似的名称之外,它与java.util.scanner没有任何关系。所以这一点也不会影响practice
。
您必须重新构造practice
代码,以便使用@inject
(例如,使用CDI)作为扫描器工作。然后使用mockito(@mock,@injectmocks)连接扫描仪。不过,那是很多重型机械。作为另一种选择,您可以设计practice
,使其将扫描程序作为构造函数参数或属性。
但是,您仍然有问题,扫描器是一个最终类,不能扩展。因此,您必须为此引入自己的接口,在一种情况下将java.util.Scanner放在引擎盖下,在另一种情况下将您的替代扫描器放在另一种情况下。
我已经尝试通过使用getter和setter来更改下面变量x的值。
问题内容: 我想在不使用设置器的情况下将值插入变量。如果有可能怎么办。 这是一个例子 现在我有一个包含,和的函数。 我试图使用一种通用方法将值设置为Object(objectOfClass),而值我已经在相应的variable()中通过了()。 问题答案: 此代码未经测试。你可以试试看 要导入的类 方法
问题内容: 我正在使用nodejs和expressjs框架从服务器下载文件’jsonFile.json’。 我正在使用以下代码 但这会导致对整个文件内容的响应。 我期望浏览器要我将文件保存在本地磁盘中。 如何将文件保存在本地磁盘中? 问题答案: 让Express设置正确的标头,然后执行以下操作: (doc) 编辑: 由于您是通过AJAX调用进行请求的,因此您必须更改设置,因为大多数(全部?)浏览器
例如。 当我将类A作为Testng类执行时,得到以下输出 而期望的输出是
我试图使用Robot机器人=new Robot(); BufferedImage img=robot.create屏幕捕获(new Rectgle(c1, c2, w, h)); 这将以72 dpi的速度剪切图像。我的完整源代码 } 类ImagePanel扩展了JPanel{ } 我需要裁剪选定的部分在300 dpi作为打印就绪的图像。任何想法请建议。
我遵循这个例子,让我的页脚停留在我的网站底部。 它正在工作,但我需要用style