Junit简介
JUnit 是一个 Java 编程语言的单元测试框架,由 Erich Gamma 和 Kent Beck 与1997年开发完成。
JUnit是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作,JUnit可广泛用于工业和作为支架(从命令行)或IDE(如Eclipse)内单独的Java程序。
JUnit的特点
- JUnit是用于编写和运行测试的开源框架;
- 提供了注释,以确定测试方法;
- 提供断言测试预期结果;
- 提供了测试运行的运行测试;
- JUnit测试让您可以更快地编写代码,提高质量;
- JUnit是优雅简洁。它是不那么复杂以及不需要花费太多的时间;
- JUnit测试可以自动运行,检查自己的结果,并提供即时反馈;
- JUnit测试可以组织成测试套件包含测试案例,甚至其他测试套件;
- Junit显示测试进度的,如果测试是没有问题条形是绿色的,测试失败则会变成红色。
Junit常用注解
首先介绍 Junit 的几种类似于@Test 的注解:
1.@Test
使用该注解标注的public void方法会表示为一个测试方法。
@Test public void add() { example test = new example(); assertEquals(5,test.add(1,4)); }
2.@Before
表示在任意使用@Test注解标注的public void方法执行之前执行。
@Before public void beforeTest(){ System.out.println("test begin"); }
3.@After
表示在任意使用@Test注解标注的public void方法执行之后执行。
@After public void afterTest(){ System.out.println("test begin"); }
4.@BeforeClass
在类中的任意public static void方法执行之前执行(只执行一次)。
@BeforeClass public static void runOnceBeforeClass() { System.out.println("@BeforeClass - runOnceBeforeClass"); }
5.@AfterClass
表示在类中的任意public static void方法执行之后执行。
@AfterClass public static void runOnceAfterClass() { System.out.println("@AfterClass - runOnceAfterClass"); }
Junit常用断言
1.assertEquals
断言两个值相等,值可能是类型有 int, short, long, byte, char or java.lang.Object.,第一个参数是一个可选的字符串消息。
@Test public void test() { String obj1 = "junit"; String obj2 = "junit"; assertEquals(obj1, obj2); }
2.assertTrue
断言一个条件为真。
@Test public void test() { int var1 = 1; int var2 = 2; assertTrue(var1 var2); }
3.assertNotNull
断言一个对象不为空。
@Test public void test() { String obj1 = "junit"; assertNotNull(obj1); }
同理,assertNull,就是断言对象为空。
4.assertSame
断言,两个对象引用相同的对象。
@Test public void test() { String obj3 = "test"; String obj4 = "test"; assertSame(obj3, obj4); }
同理,assertNotSame,就是两个对象引用不相同的对象。
5.assertArrayEquals
断言预期数组和结果数组相等,数组的类型可能是 int, long, short, char, byte or java.lang.Object。
@Test public void test() { int[] arithmetic1 = { 1, 2, 3 }; int[] arithmetic2 = { 1, 2, 3 }; assertArrayEquals(arithmetic1, arithmetic2); }
Junit使用案例
1.创建被测试类 Calculator
public class Calculator { //加法 public int add(int a, int b) { return a + b; } }
2.创建测试用例
import com.mikechen.junit.Calculator; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class CalculatorTest { @Test public void testAdd() { System.out.println("testAdd执行了!"); Calculator calculator = new Calculator(); int res = calculator.add(1, 2); //第一个参数值是预期结果,第二个参数是实际结果 Assert.assertEquals(3, res); } @Before public void init() { System.out.println("init执行了!"); } @After public void close() { System.out.println("close执行了!"); } }
3.测试运行结果
intit执行了! testAdd执行了! close执行了!
Junit总结
本篇主要讲解了Junit的特点,以及常用注解与测试用例,希望对你了解Junit单元测试有所帮助!
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》