51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1980|回复: 2
打印 上一主题 下一主题

[讨论] 单元测试之Junit使用

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-2 13:19:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. 下面我们以一个实例来演示junit的使用。在pom.xml引入jar包


  2. [html] view plain copy
  3. <dependency>  
  4.         <groupId>junit</groupId>  
  5.         <artifactId>junit</artifactId>  
  6.         <version>4.10</version>  
  7.     </dependency>  
  8. 业务实现类:

  9. [java] view plain copy
  10. package cn.slimsmart.unit.test.demo.junit;  
  11.   
  12. /**
  13. * 两数相加
  14. * @author slimina
  15. */  
  16. public interface AddService {  
  17.     int add(int a , int b);  
  18. }  
  19. 实现类:
  20. [java] view plain copy
  21. package cn.slimsmart.unit.test.demo.junit;  
  22.   
  23. public class AddServiceImpl implements AddService{  
  24.   
  25.     @Override  
  26.     public int add(int a , int b){  
  27.         return a+b;  
  28.     }  
  29.   
  30. }  
  31. 测试类:

  32. [java] view plain copy
  33. package cn.slimsmart.unit.test.demo.junit;  
  34.   
  35. import static org.junit.Assert.assertSame;  
  36. import static org.junit.Assert.assertTrue;  
  37.   
  38. import org.junit.After;  
  39. import org.junit.AfterClass;  
  40. import org.junit.Before;  
  41. import org.junit.BeforeClass;  
  42. import org.junit.Test;  
  43.   
  44. /**
  45. * Junit测试实例
  46. * @author slimina
  47. *
  48. */  
  49. public class JunitTest {  
  50.   
  51.     private AddService addService;  
  52.   
  53.     @BeforeClass //全局只会执行一次,而且是第一个运行  
  54.     public static void beforeClass() {  
  55.         System.out.println("beforeClass invoked.");  
  56.     }  
  57.   
  58.     @Before  //在测试方法运行之前运行  
  59.     public void setUp() {  
  60.         System.out.println("初始化");  
  61.         addService = new AddServiceImpl();  
  62.     }  
  63.   
  64.     /**
  65.      *  测试方法
  66.      * @Test注解提供2个参数
  67.      * “expected”,定义测试方法应该抛出的异常,如果测试方法没有抛出异常或者抛出了一个不同的异常,测试失败
  68.      * “timeout”,如果测试运行时间长于该定义时间,测试失败(单位为毫秒)
  69.      */  
  70.     @Test  
  71.     public void testAdd() {  
  72.         assertTrue(addService.add(1, 1) == 2);  
  73.     }  
  74.       
  75.     @Test  
  76.     public void testAdd1() {  
  77.         assertSame(addService.add(1, 2) , 3);  
  78.     }  
  79.   
  80.     @After //在测试方法运行之后允许  
  81.     public void tearDown() {  
  82.         addService = null;  
  83.         System.out.println("测试退出");  
  84.     }  
  85.   
  86.     @AfterClass //全局只会执行一次,而且是最后一个运行  
  87.     public static void afterClass() {  
  88.         System.out.println("afterClass invoked.");  
  89.     }  
  90. }  
  91. 测试统一执行类:

  92. [java] view plain copy
  93. package cn.slimsmart.unit.test.demo.junit;  
  94.   
  95. import org.junit.runner.RunWith;  
  96. import org.junit.runners.Suite;  
  97.   
  98.   
  99. /**
  100. * 测试套件类, 此类中可注解全部的测试组套件或测试类
  101. * 注意:要保证测试套件之间没有循环包含关系,否则无尽的循环就会出现在您的面前
  102. */  
  103.   
  104. @RunWith(Suite.class)   
  105. @Suite.SuiteClasses({  
  106.     JunitTest.class  
  107.     //可以添加多个单元测试,同一执行,以逗号分隔  
  108.     })  
  109. public class RunAllUtilTestsSuite{  
  110.       
  111. }  
  112. 运行结果:

  113. [plain] view plain copy
  114. beforeClass invoked.  
  115. 初始化  
  116. 测试退出  
  117. 初始化  
  118. 测试退出  
  119. afterClass invoked.  
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-25 14:45 , Processed in 0.071477 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表