Java:JUnit4使用详解

对于Junit的总是一知半解不太懂,现在认真梳理一下;   

此次针对的是Junit4版本,注解也是在Junit4版本才有的,之前的版本并无注解功能。而注解开发基本上被认为是一种优秀的设计,所以我们写单元测试用例时,尽可能地去了解并使用注解。

     @Test:使用该注解的方法为测试方法,自动运行时能够识别并被执行

      包含两个参数:expected=XXXException.class 期望出现的异常

                               timeout=xxx 设定程序运行的超时时间

     @Ignore:被忽略的测试方法

     @Before:在每个测试方法之前运行

     @After: 在每个测试方法之后运行

     @BeforeClass:在所有测试开始之前运行

     @AfterClass:在所有测试开始之后运行 

     注意:

     (1) @Before与@BeforeClass的区别

     @Before会加在每个方法前执行,即有几个@Test就会执行几遍。

     @BeforeClass 只在所有测试之前执行,只会执行一次。并且@BeforeClass修饰的方法必须是公有的静态方法(public static )。

     @After和@AfterClass也类似

     (2)每个测试类中这四个注解不能重复使用,一个方法只能从这四个注解中挑选其中一个。

 

  重点:

   (3)如果不希望某个方法执行: 

@Ignore() 可以标注不参与测试的测试方法。当然也可以通过去除注解 

@Test 来达到这个目的,但去除注解 

@Test 会令到eclipse的JUnit View中无法显示该测试方法。

 

比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package gc;
 
import static org.junit.Assert.*;
 
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
 
public class JUnit4Test {
@Before
public void before() {
  System.out.println("@Before");
}
@Test
public void test() {
  System.out.println("@Test");
  assertEquals(5 + 5, 10);
}
  
@Ignore
@Test
public void testIgnore() {
  System.out.println("@Ignore");
}
  
@Test(timeout = 50)
public void testTimeout() {
  System.out.println("@Test(timeout = 50)");
  assertEquals(5 + 5, 10);
}
  
@Test(expected = ArithmeticException.class)
public void testExpected() {
  System.out.println("@Test(expected = Exception.class)");
  throw new ArithmeticException();
}
  
@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");
  };
};

  结果为:

1
2
3
4
5
6
7
8
9
10
11
@BeforeClass
@Before
@Test(timeout = 50)
@After
@Before
@Test(expected = Exception.class)
@After
@Before
@Test
@After
@AfterClass

  

posted @   aspirant  阅读(1219)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示