我需要为一个设计很差的旧应用程序编写JUnit测试,并将大量错误消息写入标准输出.当getResponse(String request)
方法行为正确时,它返回XML响应:
@BeforeClass
public static void setUpClass() throws Exception {
Properties queries = loadPropertiesFile("requests.properties");
Properties responses = loadPropertiesFile("responses.properties");
instance = new ResponseGenerator(queries, responses);
}
@Test
public void testGetResponse() {
String request = "<some>request</some>";
String expResult = "<some>response</some>";
String result = instance.getResponse(request);
assertEquals(expResult, result);
}
Run Code Online (Sandbox Code Playgroud)
但是当它得到格式错误的XML或者不理解它返回的请求并将null
一些东西写入标准输出时.
有没有办法在JUnit中断言控制台输出?要抓住像这样的案例:
System.out.println("match found: " + strExpr);
System.out.println("xml not well formed: " + e.getMessage());
Run Code Online (Sandbox Code Playgroud) 我有一些方法,诸如简单的数组类Add(int n)
,AddAt(int n, int index)
等.
addAt方法从超类调用另一个方法
public void addAt(int n, int index) {
if (checkIndex(index, size + 1)){
...
}
}
Run Code Online (Sandbox Code Playgroud)
检查插入的索引是否不受限制,如果是,超类方法会向控制台输出错误消息.
如果邮件被打印,我应该如何测试?我正在使用JUnit4.12-beta
我知道有一些关于void-method Unit-Testing的问题,但我的问题是不同的.
我正在学习java,所以我的老板给了我一些对我的任务有不同要求的任务.
在我的实际任务中,有一个要求,即jUnit测试必须覆盖> 60%.所以我需要测试一种非常简单的方法来达到这个60%.方法如下:
public void updateGreen() {
// delete this outprint if the Power Manager works
System.out.println(onCommand + "-green");
// p = Runtime.getRuntime().exec(command + "-green");
// wait until the command is finished
// p.waitFor();
}
Run Code Online (Sandbox Code Playgroud)
由于实习问题,我无法用Runtime
任务执行命令.所以System.out
这种方法只有一个.
我有多种方法,因此这种方法的测试将覆盖整个代码的10%以上.
测试这种方法有用吗?什么时候,怎么样?