目录
如何下载(junit.jar和hamcrest-core都要下载):
JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit?的一个统称为 xUnit 的单元测试框架之一。所谓 xUnit,就是一套基于测试驱动开发的测试框架,它的机制:将程序?预期的结果与程序运行的最终结果进行比对,确保对结果的可预知性。
单元测试是一个对单一实体(类或方法)的测试
在刚刚接触到Junit的时候有一个这样的问题,进行测试的话可以使用main函数,那为什么要使用junit?
总结:有以下几点
最重要的是规范以及方便,main写完测试完后 都是注释或者直接删掉,而Junit不需要
1,进入下载页面选择下载的文件
下载完后就是这两个文件:
在项目目录中新建一个新的Directory目录,取个名 lib
?????????????
@Test | 将一个方法标记为测试方法 |
@Before | 每一个测试方法调用前必执行的方法 |
@After | 每一个测试方法调用后必执行的方法 |
@BeforeClass | 所有测试方法调用前执行一次,在测试类没有实例化之前就已被加载,需用static修饰 |
@AfterClass | 所有测试方法调用后执行一次,在测试类没有实例化之前就已被加载,需用static修饰 |
@Ignore | 暂不执行该方法 |
? ? ? ? 1,JUnit4的单元测试用例执行顺序为:?
????????????????@BeforeClass -> @Before -> @Test -> @After -> @AfterClass;?
? ? ? ? 2,每一个测试方法的调用顺序为:?
????????????????@Before -> @Test -> @After;?
import org.junit.Test;
public class Demo {
@Test
public void example1(){
System.out.println("示例1");
}
@Test
public void example2(){
System.out.println("示例2");
}
@Test
public void example3(){
System.out.println("示例3");
}
}
????????如下图所示,测试用例的执行并不会按照我们编写代码的顺序来执行
@Test
public void example3(){
System.out.println("示例1");
}
@Test
public void example1(){
System.out.println("示例2");
}
@Test
public void example2(){
System.out.println("示例3");
}
import org.junit.Before;
import org.junit.Test;
public class Demo {
@Before
public void example4(){
System.out.println("示例Before");
}
@Test
public void example3(){
System.out.println("示例1");
}
@Test
public void example1(){
System.out.println("示例2");
}
@Test
public void example2(){
System.out.println("示例3");
}
}
该类型的方法被用来关闭由@Before注解修饰的测试方法打开的资源。
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class Demo {
@Before
public void example4(){
System.out.println("示例Before");
}
@After
public void example5(){
System.out.println("After");
System.out.println();
}
@Test
public void example1(){
System.out.println("示例1");
}
@Test
public void example2(){
System.out.println("示例2");
}
@Test
public void example3(){
System.out.println("示例3");
}
}
这样的方法被用作执行计算代价很大的任务,如打开数据库连接。被@BeforeClass 注解的方法应该是静态的(即 public?static类型的)。
import org.junit.*;
public class Main {
@BeforeClass
public static void example1() {
System.out.println("示例BeforeClass");
}
@Test
public void example3() {
System.out.println("示例3");
}
}
该类型的方法被用作执行类似关闭数据库连接的任务。被@AfterClass 注解的方法应该是静态的(即 public static类型的)。
import org.junit.*;
public class Main {
@BeforeClass
public static void example1() {
System.out.println("示例BeforeClass");
}
@AfterClass
public static void example4() {
System.out.println("示例AfterClass");
}
@Test
public void example3() {
System.out.println("示例3");
}
@Test
public void example2() {
System.out.println("示例3");
}
}
忽略测试(Ignore test)被用来禁止执行junit测试类的某些或者全部测试方法。
import org.junit.*;
public class Main {
@Test
public void example1() {
System.out.println("示例1");
}
@Test
public void example2() {
System.out.println("示例2");
}
@Test
public void example3() {
System.out.println("示例3");
}
@Ignore
@Test
public void example4() {
System.out.println("示例4");
}
@Test
public void example5() {
System.out.println("示例5");
}
}