Junit

1.Junit是干嘛的?

首先Junit是一个单元测试框架,它能让我们快速的完成单元测试。通常我们写完代码想要测试这段代码的正确性,那么我们必须新建一个类,写一个main方法,然后编写测试代码。如果要测试的代码很多,这会增加测试的复杂性。而Junit能很好的解决这个问题,简化单元测试,写一点,测一点。

2.怎么用Junitne?

如果你用的是Eclipse(自带Junit包),如果其他的需要自己下载jar包导入。

先写一个简单测试类

 1 public class Test {
 2 
 3     public int sum(int a, int b){
 4         
 5         return a+b;
 6         
 7     }
 8     
 9     public int sub(int a, int b){
10         
11         return a-b;
12         
13     }
14     
15 }

如果按照我们平常的方法去检查类里面的方法是否正确,我们会这样写

 1 public class TestDemo1 {
 2 
 3     public static void main(String[] args) {
 4         // TODO Auto-generated method stub
 5         Test t = new Test();
 6         
 7         int result = t.sum(1, 2);
 8         if(result == 3){
 9             System.out.println("sum方法正确");
10         }
11         
12         int result2 = t.sub(3, 1);
13         if(result2 == 2){
14             System.out.println("sub方法正确");
15         }
16     }

哪我们现在用Junit来测试方法

 1 public class TestDemo2 {
 2     
 3     @Test
 4     public void testSum(){
 5         Demo d = new Demo();
 6         int result = d.sum(1, 2);
 7         if(result == 3){
 8             System.out.println("sun方法正确");
 9         }
10     }
11     
12     @Test
13     public void testSub(){
14         Demo d = new Demo();
15         int result = d.sum(3, 1);
16         if(result == 2){
17             System.out.println("sub方法正确");
18         }
19     }
20     
21 }

如何运行Junit呢,要测那个方法就在那个方法上点右键Run As JUnit Test

如果结果出现如下的绿色横条,则测试通过,红色横条,则测试失败

这时候肯定会大骂一句,这个有什么用,代码差不多,效果也差不多。

接下来先介绍几种类似@Test的注解

  1.@Test: 测试方法

    a)(expected=XXException.class)如果程序的异常和XXException.class一样,则测试通过
    b)(timeout=100)如果程序的执行能在100毫秒之内完成,则测试通过

  2.@Ignore: 被忽略的测试方法:加上之后,暂时不运行此段代码

  3.@Before: 每一个测试方法之前运行

  4.@After: 每一个测试方法之后运行

  5.@BeforeClass: 方法必须必须要是静态方法(static 声明),所有测试开始之前运行,注意区分before,是所有测试方法

  6.@AfterClass: 方法必须要是静态方法(static 声明),所有测试结束之后运行,注意区@After

关于注释的使用用一个例子

 1 public class JunitTest {
 2     public JunitTest() {
 3         System.out.println("构造函数");
 4     }
 5  
 6     @BeforeClass
 7     public static void beforeClass(){
 8         System.out.println("@BeforeClass");
 9     }
10      
11     @Before
12     public void befor(){
13         System.out.println("@Before");
14     }
15      
16     @Test
17     public void test(){
18         System.out.println("@Test");
19     }
20      
21     @Ignore
22     public void ignore(){
23         System.out.println("@Ignore");
24     }
25      
26     @After
27     public void after(){
28         System.out.println("@After");
29     }
30      
31     @AfterClass
32     public static void afterClass(){
33         System.out.println("@AfterClass");
34     }
35 }

结果为

1 @BeforeClass
2 构造函数
3 @Before
4 @Test
5 @After
6 @AfterClass

关于Junit的优势举一个小例子,在上面的例子中每个方法都有Demo d = new Demo();这样会很麻烦,所以在Junit中我们可以把类的实例化放入@Before中

 1 public class TestDemo3 {
 2     
 3     Demo d = null;
 4     
 5     @Before
 6     public void testBefore(){
 7         d = new Demo();
 8     }    
 9     
10     @Test
11     public void testSum(){
12         int result = d.sum(1, 2);
13         if(result == 3){
14             System.out.println("sun方法正确");
15         }
16     }
17     
18     @Test
19     public void testSub(){
20         int result = d.sum(3, 1);
21         if(result == 2){
22             System.out.println("sub方法正确");
23         }
24     }
25 }

这样要测试的东西越多,我们的Junit的优势越明显。而且当我们需要在检测前打开什么时,结束测试后,要关掉相应的东西,可以把东西分别写在@Before和@After中,这样代码量会大量减少。

如果我们需要运行所有的测试方法,可以在测试类上点Run As JUnit Test

原文地址:https://www.cnblogs.com/Vamps0911/p/10764943.html