java单元测试启动类配置_Spring Boot 单元测试和集成测试实现详解

学习如何使用本教程中提供的工具,并在 Spring Boot 环境中编写单元测试和集成测试。

1. 概览

本文中,我们将了解如何编写单元测试并将其集成在 Spring Boot 环境中。你可在网上找到大量关于这个主题的教程,但很难在一个页面中找到你需要的所有信息。我经常注意到初级开发人员混淆了单元测试和集成测试的概念,特别是在谈到 Spring 生态系统时。我将尝试讲清楚不同注解在不同上下文中的用法。

2. 单元测试 vs. 集成测试

维基百科是这么说单元测试的:

在计算机编程中,单元测试是一种软件测试方法,用以测试源代码的单个单元、一个或多个计算机程序模块的集合以及相关的控制数据、使用过程和操作过程,以确定它们是否适合使用。

“集成测试(有时也称集成和测试,缩写为 I&T)是软件测试的一个阶段,在这个阶段中,各个软件模块被组合在一起来进行测试。”

简而言之,当我们在做单元测试时,只是测试了一个代码单元,每次只测试一个方法,不包括与正测试组件相交互的其他所有组件。

另一方面,在集成测试中,我们测试各组件之间的集成。由于单元测试,我们可知这些组件行为与所需一致,但不清楚它们是如何在一起工作的。这就是集成测试的职责。

3. Java 单元测试

所有 Java 开发者都知道 JUnit 是执行单元测试的主要框架。它提供了许多注解来对期望进行断言。

Hamcrest 是一个用于软件测试的附加框架。Hamcrest 允许使用现有的 matcher 类来检查代码中的条件,还允许自定义 matcher 实现。要在 JUnit 中使用 Hamcrest matcher,必须使用 assertThat 语句,后跟一个或多个 matcher。

在这里,你可以看到使用这两种框架的简单测试:

import static org.hamcrest.CoreMatchers.allOf;

import static org.hamcrest.CoreMatchers.anyOf;

import static org.hamcrest.CoreMatchers.both;

import static org.hamcrest.CoreMatchers.containsString;

import static org.hamcrest.CoreMatchers.equalTo;

import static org.hamcrest.CoreMatchers.everyItem;

import static org.hamcrest.CoreMatchers.hasItems;

import static org.hamcrest.CoreMatchers.not;

import static org.hamcrest.CoreMatchers.sameInstance;

import static org.hamcrest.CoreMatchers.startsWith;

import static org.junit.Assert.assertArrayEquals;

import static org.junit.Assert.assertEquals;

import static org.junit.Assert.assertFalse;

import static org.junit.Assert.assertNotNull;

import static org.junit.Assert.assertNotSame;

import static org.junit.Assert.assertNull;

import static org.junit.Assert.assertSame;

import static org.junit.Assert.assertThat;

import static org.junit.Assert.assertTrue;

import java.util.Arrays;

import org.hamcrest.core.CombinableMatcher;

import org.junit.Test;

public class AssertTests {

@Test

public void testAssertArrayEquals() {

byte[] expected = "trial".getBytes();

byte[] actual = "trial".getBytes();

assertArrayEquals("failure - byte arrays not same", expected, actual);

}

@Test

public void testAssertEquals() {

assertEquals("failure - strings are not equal", "text", "text");

}

@Test

public void testAssertFalse() {

assertFalse("failure - should be false", false);

}

@Test

public void testAssertNotNull() {

assertNotNull("should not be null", new Object());

}

@Test

public void testAssertNotSame() {

assertNotSame("should not be same Object", new Object(), new Object());

}

@Test

public void testAssertNull() {

assertNull("should be null", null);

}

@Test

public void testAssertSame() {

Integer aNumber = Integer.valueOf(768);

assertSame("should be same", aNumber, aNumber);

}

// JUnit Matchers assertThat

@Test

public void testAssertThatBothContainsString() {

assertThat("albumen", both(containsString("a")).and(containsString("b")));

}

@Test

public void testAssertThatHasItems() {

assertThat(Arrays.asList("one", "two", "three"), hasItems("one", "three"));

}

@Test

public void testAssertThatEveryItemContainsString() {

assertThat(Arrays.asList(new String[] { "fun", "ban", "net" }), everyItem(containsString("n")));

}

// Core Hamcrest Matchers with assertThat

@Test

public void testAssertThatHamcrestCoreMatchers() {

assertThat("good", allOf(equalTo("good"), startsWith("good")));

assertThat("good", not(allOf(equalTo("bad"), equalTo("good"))));

assertThat("good", anyOf(equalTo("bad"), equalTo("good")));

assertThat(7, not(CombinableMatcher.<Intege

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值