Junit单元测试和Spring+Junit整合使用

本文介绍了如何使用Junit进行单元测试,包括导入Junit,创建测试方法,按照顺序执行测试,解决执行顺序问题,以及如何在Spring环境下整合使用Junit进行测试。讲解了JUnit的断言功能,以及@BeforeClass、@AfterClass等注解的作用。此外,还探讨了静态代码块与beforeClass的执行顺序,并展示了Spring+Junit如何自动配置测试环境。
摘要由CSDN通过智能技术生成

Junit:

是一个Java的单元测试框架,主流IDE都集成了Junit,例如Eclipser和IDEA,Junit测试属于白盒测试。

前置技能:

Java

Getting Started

1、导入Junit和快速生成测试方法

这部分这位博主写得很详细,我就不重复了。

2、demo

先写两个个简单的方法

public class MyFunction {
	//一个会对你说hello的方法
	public String hello(String name) {
		return "hello "+name;
	}
	//一个会做除法的方法
	public int divide(int divident,int dividor) {
		return divident/dividor;
	}

}

在生成的测试类方法中填写逻辑
按照逻辑,我们输入world,hello()方法应该返回hello world
我们输入8和4,divide()方法应该返回2

class MyFunctionTest {
	@Test
	void testHello() {
		//assertEquals(预测应该返回的值,实际程序返回的值)
		assertEquals("hello world",new MyFunction().hello("world"));
	}
	@Test
	void testDivide() {
		//我预期8/4的结果为2,但我断言它为4!
		assertEquals(4, new MyFunction().divide(8, 4));
	}

断言assert
用于比较期望值和实际值,若测试失败,Assert类抛出一个AssertionFailedError异常。

运行结果面板
在这里插入图片描述

如果用0做divide()方法的被除数,就能看到异常。
在这里插入图片描述

3、按照顺序执行测试方法

@FixMethodOrder(MethodSorters.NAME_ASCENDING)注解 按方法名顺序执行

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MyFunctionTest {
	@Test
	public void test3() {
		System.out.println("———3—");
	}
	@Test
	public void test2() {
		System.out.println("———2—");
	}
	@Test
	public void test1() {
		System.out.println("———1—");
	}
}

运行结果
在这里插入图片描述

*3.1、可能遇到的问题

如果发现你没有加@FixMethodOrder(MethodSorters.NAME_ASCENDING)注解,但是方法也按照名顺序排序了;
或是你的Test不支持@Before @After等注解;
你可能是导错了包,我们通常用的Test在import org.junit.Test;包下。

本教程使用的 支持before、after等注解

import org.junit.Test

但快速生成测试方法类,使用的是这个包下的

import org.junit.jupiter.api.Test;

4、顺序注解

@Before在每个测试方法执行前,执行一次。
@After在每个测试方法执行后,执行一次。
@BeforeClass,在类开始运行时,执行一次。
@AfterClass在类结束运行时,执行一次。

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestJunit {
	@Before
	public void before() {
		System.out.println("———before———");
	}
	@After
	public void after() {
		System.out.println("———after———");
	}
	@BeforeClass
	public static void beforeClass() {
		System.out.println("———beforeClass———");
	}
	@AfterClass
	public static void afterClass() {
		System.out.println("———afterClass———");
	}
	@Test
	public	void test2() {
		System.out.println("———测试方法2—");
	}
	@Test
	public void test1() {
		System.out.println("———测试方法1—");
	}
}

运行结果
在这里插入图片描述
静态代码块和beforeClass到底谁快?
是我静态代码块比较快哒!
在这里插入图片描述

5、Spring+Junit

在测试类里,可以自动读取applicationContext.xml设置文件,为依赖注入的对象赋值。

@RunWith(SpringJUnit4ClassRunner.class)//用来加载spring配置
@ContextConfiguration("classpath:applicationContext.xml")//classpath:表示从根路径查找xml文件
class DaoImplTest {
	@Autowired //注解 依赖注入
	private Dao dao;
	@Test
	void testSelect() {
		String result =dao.select(10086);
		System.out.println(result);
	}
}

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值