JUnit accuracy/failure/stress test区别
2024-09-23 17:41:47
accuracy test(结果准确性测试)
例如,Assert.assertEquals(expected, actual)。
如果结果不符合期望则产生failure。说明程序逻辑有问题。
failure test(抛出异常测试)
expected属性用来指示期望抛出的异常类型。例如,@Test(expected = IllegalArgumentException.class)。
如果结果不符合期望则产生failure。说明程序逻辑有问题。
stress test(运行时间测试)
timeout属性用来指示时间上限,单位是毫秒。例如,@Test(timeout = 300)。
如果超时则产生error。说明程序本身性能达不到要求。
举个例子
package edu.zju.cst.Student; public class Student {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String speak(String stm) {
try {
Thread.sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
} return name + ": " + stm;
}
}
Student.java
package edu.zju.cst; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import edu.zju.cst.Student.Student;
import junit.framework.Assert; public class StudentAccuracyTest {
private Student student; @Before
public void setUp() {
student = new Student();
student.setName("Tom");
} @Test
public void testSpeak() {
String expected = "Tom: hello";
String actual = student.speak("hell");
Assert.assertEquals(expected, actual);
} @After
public void tearDown() { }
}
StudentAccuracyTest.java
package edu.zju.cst; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import edu.zju.cst.Student.Student; public class StudentFailureTest {
private Student student; @Before
public void setUp() {
student = new Student();
student.setName("Tom");
} @Test(expected = IllegalArgumentException.class)
public void testSpeak() throws IllegalArgumentException {
student.speak("hell");
} @After
public void tearDown() { }
}
StudentFailureTest.java
package edu.zju.cst; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import edu.zju.cst.Student.Student; public class StudentStressTest {
private Student student; @Before
public void setUp() {
student = new Student();
student.setName("Tom");
} @Test(timeout = 300)
public void testSpeak() {
student.speak("hell");
} @After
public void tearDown() { }
}
StudentStressTest.java
package edu.zju.cst; import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class)
@SuiteClasses({StudentAccuracyTest.class, StudentFailureTest.class,
StudentStressTest.class})
public class TestSuite { }
TestSuite.java
参考资料
JUnit4:Test注解的两个属性:expected和timeout
最新文章
- HIVE 在执行大量数据JOIN的时候,容易产生内存不足的情况
- 【GoLang】GoLang struct 使用
- 利用OData轻易实现串流数据的可视化
- debian系统安装Thinkpad T410s的无线网卡驱动:centrino Advanced-N 6200 2x2 AGN
- Owin管道与asp.net管道模型
- c++内存分配
- c# 为什么要用 get set 属性
- 不创建类将json数据转换
- 微端游戏启动器launcher的制作(序篇)
- php实现留言板功能
- 来谈谈JAVA面向对象 - 鲁班即将五杀,大乔送他回家??
- 下载Android源代码编译错误总结
- python数据类型分类
- window10安装黑苹果
- 关于微服务、SOA、以及API的理解
- 直接用php.exe命令还执行php程序跟直接在网页上访问php程序的区别
- 04 - django的路由层 1
- How to bind a Command on a ContextMenu within a DataTemplate using MVVM
- 二进制拆位(贪心)【p2114】[NOI2014]起床困难综合症
- c语言简单实现telnet客户端