美文网首页
JUnit单元测试1—入门基础

JUnit单元测试1—入门基础

作者: 莫问君心 | 来源:发表于2019-09-26 14:52 被阅读0次

单元测试又名模块测试,是对软件设计最小单元进行白盒测试验证,一般在修改代码后都需要执行一次单元测试,以确保程序功能正确。
现在主流开源软件提交代码合入请求时都需要提供相应的单元测试代码,越来越多的大型企业对其产品的单元测试代码覆盖率有着明确的要求(常见覆盖率要求50% ~ 80%)。

软件准备

我们以Maven构建Java程序为例,只需在pom.xml中添加对JUnit 4的依赖即可:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
</dependencies>

单元测试的一般性约束

  • 代码目录
    单元测试代码一般存放在项目的src/test/java目录下
  • 命名约束:
    • 测试类命名:
      测试类名以Test结尾,例如
      LogWriterTest.java
    • 测试方法命名:
      测试类中的测试方法命名一般为“test” + “待测方法/功能/异常”,例如:
      public void testWrite()

JUnit单元测试的方法注解

  • @Test 表示该方法是一个测试方法,在执行mvn test时会被自动执行。
  • @Test(timeout = 100) 该方法执行时间超过100毫秒时,测试将会失败。
  • @Test(expected = xxxException.class) 该方法期望执行过程中抛出指定异常,否则测试将会失败。
  • @BeforeClass 用于注解静态方法,方法会在测试类实例化前被调用一次,一般用于初始化资源。
  • @Before 测试方法每次执行前,都会调用该方法一次。
  • @AfterClass 用于注解静态方法,方法会在所有测试用例结束后被调用一次,一般用于释放资源。
  • @After 测试方法每次执行后,都会调用该方法一次。
  • @Ignore 忽略该测试方法(静态忽略)。如用于注解测试类,则该类中所有测试方法都不会被执行。

如果需在运行时动态决定是否要忽略测试方法,可借助Assume.assumeTrue方法实现。

Assert断言

断言用于标识某一具体状态下程序验证与开发者预期结果是否一致,如果断言成功则测试方法可以继续执行,否则测试方法将会失败。
JUnit提供了多种断言方法:failassertTrueassertEqualsassertNull,示例如下:

assertTrue(list.isEmpty());

示例程序

被测代码:HelloWorld.java

public class HelloWorld {
    public String sayHello(String name) {
        return "hello:" + name;
    }
}

测试代码:HelloWorldTest.java

import static org.junit.Assert.*;

import org.junit.BeforeClass;
import org.junit.Test;

public class HelloWorldTest {
    private static HelloWorld helloWorld;

    @BeforeClass
    public static void initHelloWorld() {
        helloWorld = new HelloWorld();
    }

    @Test
    public void testSayHello() {
        assertEquals("hello:world", helloWorld.sayHello("world"));
    }
}

使用mvn test命令执行测试:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running HelloWorldTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.129 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

下一篇:JUnit单元测试2—测试框架

相关文章

  • JUnit单元测试1—入门基础

    单元测试又名模块测试,是对软件设计最小单元进行白盒测试验证,一般在修改代码后都需要执行一次单元测试,以确保程序功能...

  • JDBC

    最近学习了Java中的JDBC,做个总结~~ 1.Jdbc基础准备 junit(单元测试的工具) Junit单元测...

  • Instrumentation

    1、Instrumentation单元测试框架,基于Junit;Junit是java单元测试根本 2、想要进行自动...

  • Journal 10月 17,2017(Wed)

    Done:《Hadoop权威指南》第4章《大数据系统基础》1 绪论极客学院wiki《JUnit入门》4.JUnit...

  • Junit4 Test 详解

    [TOC] 介绍 Junit4 是在 Junit3 基础上改进的单元测试框架 junit4 不需要继承 TestC...

  • ①TestNG 与 JUnit 测试框架

    一、TestNG与JUnit的不同点: JUnit 1、JUnit只能进行单元测试2、JUnit只能使用IDE运行...

  • Android单元测试(一)

    本文介绍了Android单元测试入门所需了解的内容,包括JUnit、Mockito和PowerMock的使用,怎样...

  • Junit测试

    今日内容 Junit单元测试 反射 注解 Junit单元测试: 测试分类:1. 黑盒测试:不需要写代码,给输入值,...

  • 3/26day19_JUnit单元测试_NIO

    day19_JUnit单元测试_NIO 复习 今日内容 Junit单元测试[重点] 单元测试概念 什么叫单元测试单...

  • JUnit单元测试打进jar包(eclipse)

    一、编写JUnit单元测试类 在src/main/test目录下编写Junit单元测试类。 二、编写运行JUnit...

网友评论

      本文标题:JUnit单元测试1—入门基础

      本文链接:https://www.haomeiwen.com/subject/ppphyctx.html