天天看点

Junit入门到掌握-3-JUnit基础-第一个JUnit单元测试代码详解

前面环境搭建好了,我们来写一个JUnit的单元测试,然后分析里面代码,引出一些JUnit的基本概念。

1.环境准备

新建一个overview包,然后新建一个Test01.java文件,写入下面代码内容。

package overview;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class Test01 {
	
	@Test
	public void test1() {
		assertEquals(5, "hello".length());
	}
}
           

保存之后,JUnit自动添加到了build path依赖。

Junit入门到掌握-3-JUnit基础-第一个JUnit单元测试代码详解

这个可以看出使用Junit的版本号。

2.代码解释

@Test
	public void test1() {
		assertEquals(5, "hello".length());
	}
           

在Junit中,任何测试方法如果想要通过JUnit方式运行,这些方法前面一行需要添加@Test注解。添加了这个注解,就是告诉JUnit框架,这个方法是一个JUnit测试用例,不加就是Java中普通的方法。在添加这个注解过程,会提示要导入JUnit的Test包,所以导包语句中有 import org.junit.Test;

这个地方有很多知识点,我们一个一个来讲。

2.1 JUnit方法只能使用public修饰

关于这点,我们把public 改成private,然后运行下。

Junit入门到掌握-3-JUnit基础-第一个JUnit单元测试代码详解

如果是private修饰,会报Java异常,没有找到匹配的测试。

2.2 JUnit方法不能有返回值。

把Junit方法换成下面代码,尝试执行下run as junit。

@Test
	public int test1() {
		assertEquals(5, "hello".length());
		return 1 + 1;
	}
           

得到和2.1中相同的异常,所以记住Junit测试方法中没有返回值,必须是void。

2.3 早期JUnit方法名称必须是test开头,现在可以是任意。

这里说一下,为什么我写方法名称是test1(), 这个是个人习惯。因为早期JUnit版本就是要求方法名称必须小写的test开头,后来最新和JUnit4和JUnit5就没有这个要求,方法名称可以随便取,例如下面的例子。

@Test
	public void verifyStringLength() {
		assertEquals(5, "hello".length());
	}
           

上面方法名称为verifyStringLength,验证字符长度,也是可以运行

2.4 断言

在JUnit中,关于断言,有很丰富的封装好的断言,判断方法供我们使用,这也是作为Java程序员使用JUnit写单元测试的一个理由。既然有轮子,为什么还要去造轮子呢。

assertEquals(5, "hello".length());
           

这个断言方法是判断两个对象相等,第一个参数是期待结果,第二个参数是实际结果。

关于想了解更多断言,在Junit中断言方法一般是assert开头,然后你根据代码提示,选择你需要的断言方法

Junit入门到掌握-3-JUnit基础-第一个JUnit单元测试代码详解

2.5 更多注解

上面我说了一个@Test注解,如果要非常熟练使用JUnit,我们还需要学习以下常见的注解。

@Test
@Before
@After
@BeforeClass
@AfterClass
@Ignore
@Test(expected = Exception.class)
@Test(timeout=100)
           

这些注解,我们后面文章会逐一介绍到。

继续阅读