java单元测试

Java单元测试

1.概述

java单元测试是最小的功能单元测试代码, 单元测试就是针对单个java方法的测试。java程序的最小功能单元是方法。

  • main方法进行测试的缺点:
    • 只能有一个main()方法, 不能把测试代码分离出来
    • 无法打印出测试结果和期望结果.例如: expected: 3628800, but actual: 123456
  • 单元测试的优点:
    • 确保单个方法正常运行
    • 如果修改了方法代码, 只需要保其对应的单元测试通过就可以了
    • 测试代码本省就可以作为示例代码
    • 可以自动化运行所有测试并获得报告

前期准备

导入maven依赖(或导入jar包):

1<dependency> 2 <groupId>junit</groupId> 3 <artifactId>junit</artifactId> 4 <version>4.12</version> 5 <!-- junit的版本有3.x, 4.x, 5.x 5.x还没有发布, 现在都用是4.x --> 6</dependency>

2.单元测试

java中常用的注解介绍:

@BeforeClass:针对所有测试,只执行一次,且必须为static void

@Before:初始化方法

@Test:测试方法,在这里可以测试期望异常和超时时间

@Test(timeout=1000)可以设置超时时间,单位毫秒

@Test(expected=Exception.class), 对可能发生的每种类型的异常进行测试

1// 运行如下代码, 正常运行, 确实发生了ArithmeticException异常, 代码通过 2@Test(expected = ArithmeticException.class) 3 public void testException() { 4 int i = 1 / 0; 5 } 6//运行如下代码: 有报错信息 7@Test(expected = ArithmeticException.class) 8 public void testException() { 9 int i = 1 / 1; 10 }

@After:释放资源

@AfterClass:针对所有测试,只执行一次,且必须为static void

@Ignore:忽略的测试方法

编写java类

1public class Calculate{ 2 public int calculate(int a,int b){ 3 return a+b; 4 } 5}

编写测试类

1public class TestCaculate{ 2 @Test 3 public void calculate(){ 4 assertEquals(3,new Calculate().calculate(1,2)); 5 assertEquals(6,new Calculate().calculate(1,2)); 6 } 7}

测试结果:java.lang.AssertionError: expected:<6> but was:<3>

第一个方法是正确的没有报错

第二个方法清楚的显示了结果的对比情况

3.断言

包名:import static org.junit.Assert.*;

img

Assert.assertEquals方法

函数原型1:assertEquals([String message],expected,actual)

参数说明:

message是个可选的消息,假如提供,将会在发生错误时报告这个消息。

expected是期望值,通常都是用户指定的内容。

actual是被测试的代码返回的实际值。

函数原型2:assertEquals([String message],expected,actual,tolerance)

参数说明:

message是个可选的消息,假如提供,将会在发生错误时报告这个消息。

expected是期望值,通常都是用户指定的内容。

actual是被测试的代码返回的实际值。

tolerance是误差参数,参加比较的两个浮点数在这个误差之内则会被认为是相等的。

4.Spring整合Junit

在测试类中,每个测试方法都有以下两行代码: ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService as = ac.getBean("accountService",IAccountService.class); 这两行代码的作用是获取容器,如果不写的话,直接会提示空指针异常。所以又不能轻易删掉。

步骤:

导入jar包

使用@RunWith替换原有运行器

1@RunWith(SpringJUnit4ClassRunner.class) 2public class AccountServiceTest { 3}

使用@ContextConfiguration指定配置文件

1@RunWith(SpringJUnit4ClassRunner.class) 2@ContextConfiguration(locations= {"classpath:bean.xml"}) 3public class AccountServiceTest { 4}

使用@Autowired注入数据

1@RunWith(SpringJUnit4ClassRunner.class) 2@ContextConfiguration(locations= {"classpath:bean.xml"}) 3public class AccountServiceTest { 4@Autowired 5private IAccountService as ; 6}
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java单元测试工具

前言随着DevOp的不断流行,自动化测试慢慢成为Java开发者的关注点。因此,本文将分享10款优秀的单元测试框架和库,它们可以帮助Java开发人员在其Java项目上编写单元测试和集成测试。1\.JUnit我绝对JUnit不需要太多的介绍了。即使您是Java初学者,也可能听说过它。它可以帮助您为Java代码编写单元测试。几

java之Junit

Java之Junit的使用法则第一,Junit是指单元测试,用来对java程序的测试。以后可用来对代码的测试第二,Junit使用方法命名规范:publicvoid方法名(){}第三,具体实现步奏1.创建java类 !(https://oscimg.oschina.net/oscnet/d4a6428c8c4116

java之单元测试

这篇主要简单讲下java的单元测试目录结构如下:!(https://img2018.cnblogs.com/blog/1182288/201907/1182288201907162310379601945570313.png)如图,其中1是需要被测试的功能;2是测试模块;3是单元测试需要的引入包;1\.功能模块1中Calculat

Demo002 IDEA中Junit单元测试的使用(初级篇)

推荐JUnit视频教程:JUnit—Java单元测试必备工具(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.imooc.com%2Flearn%2F356)。1.基本理论1.1单元测试单元测试又称模块测试,属于白盒测试,是最小单位的测试。模

OpenStack基础知识

针对以前学的内容的一个简单整理1、单元测试工具介绍unittest:是Python的标准库,提供了最基本的单元测试功能,包括单元测试运行器(简称runner)和单元测试框架。项目的单元测试代码的测试类可以继承unittest.TestCase类,那么这个类就能够被runner发现并且执行。同时,unittest.TestCase