Junit 学习笔记

1. 编写测试用例时需要注意

  1. 测试方法上必须使用 @Test 进行修饰
  2. 测试方法必须使用 public void 进行修饰,不能带任何参数
  3. 新建一个车源代码目录来存放我们的测试代码
  4. 测试类的包应该和被测试类保持一致
  5. 测试单元中的每个方法必须可以独立测试,测试方向间不能有任何依赖
  6. 测试类使用 Test 作为类名的后缀(不是必须)
  7. 测试方法使用 Test 作为方法名的前缀(不是必须)

2. 出现结果分析

  1. Failure 一般由单元测试使用的断言方法判断失败所引起,这表示测试点发现了问题,就是说程序输出的结果和我们预期的不一样。
  2. error 是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏 bug
  3. 测试用例不是用来证明你是对的,而是用来证明你没有错(即测试用例用来达到想要的预期结果,但对于逻辑错误无能为力)。

3. Junit 运行流程

举个例子:

public class JunitFlowTest {

    @BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("this is beforeClass...");
} @AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("this is afterClass...");
} @Before
public void setUp() throws Exception {
System.out.println("this is before...");
} @After
public void tearDown() throws Exception {
System.out.println("this is after");
} @Test
public void test1() {
System.out.println("this is test1...");
} }

输出结果如下:

---- IntelliJ IDEA coverage runner ----
sampling ...
include patterns:
com\.test\.util\..*
exclude patterns:this is beforeClass...
this is before...
this is test1...
this is after
this is afterClass... Process finished with exit code 0

解释如下:

  1. @BeforeClass 修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它,而且在内存中它只回存在一份实例,它比较适合加载配置文件
  2. @AfterClass 所修饰的方法通常用来对资源的清理,如关闭数据库的连接
  3. @Before@After 会在每个测试方法的前后各执行一次

4. Junit 常用注解

  1. @Test:将一个普通的方法修饰成为一个测试方法

    • @Test(expected=XX.class):用来捕获异常
    • @Test(timeout=毫秒):到时间后停止测试(用来测试一些循环很久的语句)
  2. @BeforeClass:它会在所有的方法运行前被执行,static 修饰
  3. @AfterClass:它会在所有的方法运行结束后被执行,static 修饰
  4. @Before:会在每一个测试方法被运行前执行一次
  5. @After:会在每一个测试方法运行后被执行一次
  6. @Ignore:所修饰的测试方法会被测试运行器忽略
  7. @RunWith:可以更改测试运行器 org.junit.runner.Runner

举个例子:

public class AnnotationTest {

    @Test(expected = ArithmeticException.class)
public void testDivide() {
assertEquals(3, new Calculate().divide(6, 0));
} @Test(timeout = 2000)
@Ignore
public void testWhile() {
while (true) {
System.out.println("run forever...");
}
} @Test(timeout = 3000)
public void testReadFile() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} }

5. Junit 测试套件的使用

测试套件就是组织测试类一起运行的。

步骤:
  1. 写一个作为测试套件的入口类,这个类里不包含其他的方法
  2. 更改测试运行器 Suite.class
  3. 将要测试的类作为数组传入到 Suite.SuiteClasses({})
例子:
@RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class, TaskTest2.class, TaskTest3.class})
public class SuiteClasses {
}

6. Junit 参数化设置

步骤
  1. 更多默认的测试运行器为 RunWith(Parameterized.class)
  2. 声明变量来存放预期值和结果值
  3. 声明一个返回值为 Collection 的公共静态方法,并使用 @Parameters 进行修饰
  4. 为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
例子

ParameterTest.java:

@RunWith(Parameterized.class)
public class ParameterTest { int expected = 0;
int input1 = 0;
int input2 = 0; @Parameterized.Parameters
public static Collection<Object[]> t() {
return Arrays.asList(new Object[][] {
{3, 1, 2},
{4, 2, 2}
});
} public ParameterTest(int expected, int input1, int input2) {
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
} @Test
public void add() {
assertEquals(expected, new Calculate().add(input1, input2));
}
}

最新文章

  1. AE开发示例之RunGPAsync
  2. 对Oracle10g rac ons服务的一些理解
  3. RCP:如何保存TaskList及如何获取TaskList
  4. 洛谷P1017 进制转换
  5. Tornado服务器的学习
  6. Linux进程的睡眠和唤醒简析
  7. Spring使用总结
  8. 动态链接库加载出错:cannot restore segment prot after reloc: Permission denied
  9. spring-定时器(1)
  10. Spring源码情操陶冶#task:scheduled-tasks解析器
  11. VMWare 安装 Eclipse
  12. jsp中的request.getContextPath()
  13. 前端 chrome查看html样式基本操作
  14. django migrate无效的解决方法
  15. 为控件动态添加Style
  16. 软工 &#183; 第十二次作业 - Beta答辩总结
  17. java 新创建的类要重写的方法
  18. 如果应用程序正在通过 &lt;identity impersonate=&quot;true&quot;/&gt; 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。
  19. 代码编写规范Asp.Net(c#)
  20. python继续函数-练习(2017-8-3)

热门文章

  1. 【零基础】使用Tensorflow实现神经网络
  2. Linux 使用 you-get 指令下载网页视频
  3. Alpha项目冲刺! Day3-产出
  4. Java 程序流程语句
  5. arcgis python 获得打印机
  6. spring aop中aspect和advisor的区别
  7. Django 测试开发5 unittest测试用例
  8. 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_04-用户认证技术方案-SpringSecurityOauth2
  9. PHP上传文件 Error 6解决方法 (转)
  10. java书籍推荐转