第4关:Junit时间测试
任务描述
要求学员实现一个Junit时间测试:超过1000毫秒未执行结束就判定测试未通过。
相关知识
Junit时间测试
Junit 提供了一个暂停的方便选项。如果一个测试用例比起指定的毫秒数花费了更多的时间,那么Junit 将自动将它标记为失败。timeout 参数和@Test
注释一起使用。现在让我们看看活动中的 @Test(timeout)
。
代码示例
import org.junit.*;
/**
* JUnit TimeOut Test
*/
public class JunitTest {
@Test(timeout = 50000) //单位是毫秒
public void infinity() {
while (true);
}
}
在上面的例子中,infinity() 方法将不会返回,因此JUnit引擎将其标记为失败,并抛出一个异常。
java.lang.Exception:test timed out after 50000 milliseconds
编程要求
本关的编程任务是在TestTimeOut.java
中实现一个Junit时间测试,超过1000毫秒未执行结束就判定测试未通过。
本关涉及的代码文件TestTimeOut.java
的代码如下:
package step4;
import org.junit.Test;
public class TestTimeOut {
//请在下面的Begin/End内补全test()超时测试函数,要求如果超过1000毫秒执行未结束,就判定测试未通过
/***********************Begin**************************/
@Test()
public void test() {
while(true){}
}
/************************End***************************/
}
评测说明
本关卡的测试文件是TestRunner.java
,该文件进行了函数封装且学员不可见,用于验证学员的Junit测试代码是否正确。
具体测试过程如下:
1.平台自动编译生成TestRunner.exe
; 2.平台运行TestRunner.exe
; 3.获取TestRunner.exe
输出,并将其输出与预期输出对比:如果一致则测试通过,否则测试失败。
预期输入: 预期输出:
test(step4.TestTimeOut): test timed out after 1000 milliseconds
false
友情提示
1.请不要直接println
最终输出,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。
2.学员答题时请尽量手敲代码,请勿从实训讲解代码片段中复制代码段粘贴到答题区域作答,复制的内容会保留一些格式和字符,导致编译失败。
开始你的任务吧,祝你成功!
代码如下
package step4;
import org.junit.Test;
public class TestTimeOut {
//请在下面的Begin/End内补全test()超时测试函数,要求如果超过1000毫秒执行未结束,就判定测试未通过
/***********************Begin**************************/
@Test(timeout=1000)//超过1000毫秒未执行结束就判定测试未通过
public void test() {
while(true){}
}
/************************End***************************/
}