JUnit4 学习总结
一、JUnit介绍
Junit是 Erich Gamma 和 Kent Beck编写的测试框架,是我们在软件工程所说的白盒测试。
使用也很简单,只需要在Eclipse导入JAR包即可;
下载地址:https://github.com/downloads/KentBeck/junit/junit4.10.zip
二、JUnit4和JUnit3的比较
JUnit3 | JUnit4 |
测试类需要继承TestCase | 不需要继承任何类 |
测试函数约定:public、void、test开头、无参数 | 需要在测试函数前面加上@Test |
每个测试函数之前setUp执行 |
@Before |
每个测试函数之后tearDown执行 | @After |
没有类加载时执行的函数 | @BeforeClass和@AfterClass |
三、JUnit4详解
1.@Test用来标注测试函数
2.@Before用来标注此函数在每次测试函数运行之前运行
3.@After用来标注此函数在每次测试函数运行之后运行
4.@BeforeClass用来标注在测试开始时运行;
5.@AfterClass 用来标注在测试结束时运行;
6.Assert类中有很多断言,比如assertEquals("期望值","实际值");
代码示例:
Person.java
package org.xiazdong; public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Person(String name, int age) { this.name = name; this.age = age; } }
PersonTest.java
此测试是用JUnit3测试的;
package org.xiazdong.junit; import junit.framework.Assert; import junit.framework.TestCase; import org.xiazdong.Person; public class PersonTest extends TestCase { @Override protected void setUp() throws Exception { System.out.println("setUp"); } @Override protected void tearDown() throws Exception { System.out.println("tearDown"); } public void testFun1(){ Person p = new Person("xiazdong",20); Assert.assertEquals("xiazdong", p.getName()); Assert.assertEquals(20, p.getAge()); } public void testFun2(){ Person p = new Person("xiazdong",20); Assert.assertEquals("xiazdong", p.getName()); Assert.assertEquals(20, p.getAge()); } }
PersonTest2.java
此测试是用JUnit4测试的;
package org.xiazdong.junit; import junit.framework.Assert; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.xiazdong.Person; public class PersonTest2 { @Before public void before(){ System.out.println("before"); } @After public void after(){ System.out.println("After"); } @BeforeClass public void beforeClass(){ System.out.println("BeforeClass"); } @AfterClass public void afterClass(){ System.out.println("AfterClass"); } @Test public void testFun1(){ Person p = new Person("xiazdong",20); Assert.assertEquals("xiazdong", p.getName()); Assert.assertEquals(20, p.getAge()); } @Test public void testFun2(){ Person p = new Person("xiazdong",20); Assert.assertEquals("xiazdong", p.getName()); Assert.assertEquals(20, p.getAge()); } }