51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2715|回复: 1
打印 上一主题 下一主题

[讨论] JUnit单元测试--IntelliJ IDEA

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-3-8 14:30:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单元测试的基本使用

一、环境配置

     使用idea IDE 进行单元测试,首先需要安装JUnit 插件。

          1.安装JUnit插件步骤

              File-->settings-->Plguins-->Browse repositories-->输入JUnit-->选择JUnit Generator V2.0安装。

          2.使用JUnit插件

             在需要进行单元测试的类中,使用快捷键alt+insert,选择JUnit test,选择JUnit4。

二、单元测试

代码Demo:
  1. @Test
  2.     public void testAdd() {
  3.         assertEquals(2, new UserDao().add(1, 1));
  4.     }
复制代码
1>注意事项:

    1、测试方法上面必须使用@Test注解进行修饰。

    2、测试方法必须使用public void 进行修饰,不能带有任何参数。

    3、新建一个源代码目录用来存放测试代码。

    4、测试类的包应该与被测试类的包保持一致。

    5、测试单元中的每一个方法必须独立测试,每个测试方法之间不能有依赖。

    6、测试类使用Test做为类名的后缀(非必要)。

    7、测试方法使用test作为方法名的前缀(非必要)。

2>错误解析:

    1、Failure 一般是单元测试使用的断言方法判断失败引起,说明预期结果和程序运行结果不一致。

    2、error 是有代码异常引起的,他产生于测试代码本身中的Bug。

    3、测试用例是不是用来证明你是对的,而是用来证明你没有错。

3>测试流程:

代码Demo:    
  1. @BeforeClass
  2.     public static void setUpBeforeClass() throws Exception {

  3.     }
  4.     @AfterClass
  5.     public static void setUpAfterClass() throws Exception {

  6.     }

  7.     @Before
  8.     public void before() throws Exception {

  9.     }

  10.     @After
  11.     public void after() throws Exception {

  12.     }
复制代码
1、@BeforeClass所修饰的方法在所有方法加载前执行,而且他是静态的在类加载后就会执行该方法,

         在内存中只有一份实例,适合用来加载配置文件。

      2、@AfterClass所修饰的方法在所有方法执行完毕之后执行,通常用来进行资源清理,
例如关闭数据库连接。

      3、@Before和@After在每个测试方法执行前都会执行一次。

4>常用注解

      1、@Test(excepted=XX.class) 在运行时忽略某个异常。

      2、@Test(timeout=毫秒) 允许程序运行的时间。

      3、@Ignore 所修饰的方法被测试器忽略。

      4、RunWith 可以修改测试运行器 org.junit.runner.Runner

5>测试套件

      测试套件是组织测试类一起运行的测试类。具体如下:

代码Demo:
  1. @RunWith(Suite.class)
  2. @Suite.SuiteClasses({UserTest1,UserTest2,UserTest3})
  3. public class SuiteTest{
  4.    
  5. }
复制代码
注意事项:

      1、作为测试套件的入口类,类中不能包含任何方法。

      2、更改测试运行器Suite.class。

      3、将需要运行的测试类放入Suite.SuiteClasses({})的数组中。

6>参数化设置

      需要测试的仅仅是测试数据,代码结构是不变的,只需要更改测试数据。

代码Demo:   
  1. @RunWith(Parameterized.class)
  2. public class parameterTest {
  3.     int expected = 0;
  4.     int input1 = 0;
  5.     int input2 = 0;

  6.     @Parameters
  7.     public static Collection<Object[]> t() {
  8.         return Arrays.asList(new Object[][]{
  9.                 {3,1,2},
  10.                 {5,2,3}
  11.         });
  12.     }

  13.     public parameterTest(int expected,int input1,int input2) {
  14.         this.expected = expected;
  15.         this.input1 = input1;
  16.         this.input2 = input2;
  17.     }

  18.     @Test
  19.     public void testAdd() {
  20.         assertEquals(expected, UserDao.add(input1,input2));
  21.     }

  22. }
复制代码
具体步骤:

        1、更改默认的测试运行器为@RunWith(Parameterized.class)。

        2、声明变量来存放预期值和测试值。

        3、声明一个返回值为Collection的公共静态方法,并用@Parameters修饰。

        4、为测试类声明一个带有参数的公共构造函数,并在其中为他声明变量赋值。

以上为基于IntelliJ IDEA 进行的单元测试。

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

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-22 15:44 , Processed in 0.074808 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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