当前位置: 首页 > wzjs >正文

英文网站怎么做推广北京seo关键词排名优化软件

英文网站怎么做推广,北京seo关键词排名优化软件,huntt wordpress,网站备案号信息修改以下是使用 JUnit 4 在 Spring 中进行单元测试的完整步骤&#xff0c;包含配置、核心注解、测试场景及代码示例&#xff1a; 1. 添加依赖 在 pom.xml 中引入必要的测试依赖&#xff08;以 Spring 4/5 JUnit 4 为例&#xff09;&#xff1a; <!-- JUnit 4 --> <depe…

以下是使用 JUnit 4 在 Spring 中进行单元测试的完整步骤,包含配置、核心注解、测试场景及代码示例:


1. 添加依赖

pom.xml 中引入必要的测试依赖(以 Spring 4/5 + JUnit 4 为例):

<!-- JUnit 4 -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency><!-- Spring Test -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.23</version><scope>test</scope>
</dependency><!-- Mock 对象(Mockito) -->
<dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>4.5.1</version><scope>test</scope>
</dependency><!-- 数据库测试(H2,用于 DAO 层测试) -->
<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>2.1.214</version><scope>test</scope>
</dependency>

2. 编写单元测试的核心步骤

步骤 1:测试 Service 层(模拟 DAO 依赖)

使用 SpringJUnit4ClassRunner 加载 Spring 上下文,并通过 @Autowired 注入被测对象。

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;@RunWith(SpringJUnit4ClassRunner.class) // 使用 Spring 的测试运行器
@ContextConfiguration(locations = {"classpath:applicationContext.xml"}) // 加载 Spring 配置文件
public class UserServiceTest {@Autowiredprivate UserService userService;@Mockprivate UserDao userDao;// 手动注入模拟对象(JUnit 4 需手动初始化)@Beforepublic void setup() {MockitoAnnotations.initMocks(this);userService.setUserDao(userDao); // 将模拟对象注入 Service}@Testpublic void testCreateUser_Success() {User user = new User("Alice", "alice@example.com");// 定义模拟行为:当调用 userDao.insertUser() 时返回 truewhen(userDao.insertUser(user)).thenReturn(true);// 调用被测方法boolean result = userService.createUser(user);// 断言结果assertTrue(result);verify(userDao, times(1)).insertUser(user);}@Testpublic void testGetUserById_NotFound() {int userId = 999;when(userDao.findUserById(userId)).thenReturn(null);// 断言抛出异常try {userService.getUserById(userId);fail("Expected UserNotFoundException");} catch (UserNotFoundException e) {assertEquals("User not found", e.getMessage());}}
}

步骤 2:测试 DAO 层(使用内存数据库 H2)

通过 @RunWith(SpringJUnit4ClassRunner.class) 加载 Spring 上下文,并使用 H2 内存数据库。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class UserDaoIntegrationTest {@Autowiredprivate UserDao userDao;@Test@Transactional // 自动回滚事务,避免污染数据库public void testFindUserById() {// 插入测试数据User user = new User("Bob", "bob@example.com");userDao.insertUser(user);// 查询并断言User foundUser = userDao.findUserById(user.getId());assertNotNull(foundUser);assertEquals("Bob", foundUser.getName());}
}

步骤 3:测试事务回滚

在 DAO 层测试中,使用 @Transactional 确保测试后数据回滚。

@Test
@Transactional
public void testCreateUserWithRollback() {User user = new User("Charlie", "charlie@example.com");userDao.insertUser(user);// 测试结束后事务自动回滚,数据库无新增记录
}

步骤 4:测试 REST Controller 层

使用 MockMvc 模拟 HTTP 请求(需手动配置)。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebConfig.class}) // 加载 Web 配置类
@WebAppConfiguration // 启用 Web 应用上下文
public class UserControllerTest {@Autowiredprivate WebApplicationContext wac;private MockMvc mockMvc;@Beforepublic void setup() {mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();}@Testpublic void testGetUserById_Success() throws Exception {mockMvc.perform(get("/users/1")).andExpect(status().isOk()).andExpect(jsonPath("$.name").value("Alice"));}
}

3. 关键注解说明

注解用途
@RunWith(SpringJUnit4ClassRunner.class)启用 Spring 的测试运行器,加载应用上下文。
@ContextConfiguration指定 Spring 配置文件或配置类。
@Autowired自动注入 Spring 管理的 Bean。
@Transactional为测试方法启用事务,测试结束后自动回滚。
@Before在每个测试方法前执行(替代 JUnit 5 的 @BeforeEach)。
@Mock创建 Mockito 模拟对象(需配合 MockitoAnnotations.initMocks(this) 初始化)。

4. 测试场景与最佳实践

场景 1:隔离依赖(Mocking)
  • 目标:测试 Service 层逻辑时,避免依赖真实数据库。
  • 工具:使用 Mockito 模拟 DAO 层。
场景 2:轻量级集成测试
  • 目标:测试 DAO 层 SQL 是否正确,使用 H2 内存数据库。
  • 工具@Transactional + H2。
场景 3:全栈测试
  • 目标:验证 Controller → Service → DAO 的完整流程。
  • 工具MockMvc + Spring 上下文。
最佳实践
  1. 测试命名:清晰表达测试目的(如 methodUnderTest_Scenario_ExpectedResult)。
  2. 测试覆盖率:覆盖正常流程、异常分支和边界条件。
  3. 事务管理:在 DAO 层测试中使用 @Transactional 避免数据残留。
  4. 模拟依赖:使用 Mockito 隔离外部服务(如 HTTP 调用、第三方 API)。

5. 示例:测试异常场景

@Test(expected = DataAccessException.class)
public void testDatabaseError() {User user = new User("David", "david@example.com");// 模拟数据库抛出异常when(userDao.insertUser(user)).thenThrow(new DataAccessException("Connection failed") {});userService.createUser(user);
}

6. JUnit 4 与 JUnit 5 的对比

特性JUnit 4JUnit 5
注解@Before, @After@BeforeEach, @AfterEach
参数化测试需使用 @Parameters + 外部数据源原生支持 @ParameterizedTest
动态测试不支持支持 @DynamicTest
扩展模型依赖 Spring 的 @RunWith基于 JPMS 的 @ExtendWith
Java 版本要求Java 5+Java 8+

总结

  • JUnit 4 适用场景:维护旧项目、兼容 Java 7 或需要与旧版 Spring 框架集成。
  • JUnit 5 优势:更简洁的语法、更强大的功能(如参数化测试)、更好的模块化支持。

建议

  • 新项目优先使用 JUnit 5。
  • 旧项目可逐步迁移,或通过 junit-vintage-engine 兼容 JUnit 4 和 5 的测试。
http://www.dtcms.com/wzjs/143192.html

相关文章:

  • 长沙 网站建设近期时政热点新闻20条
  • 厦门网站备案crm系统成功案例分享ppt
  • 成都网站建设设计微信拓客的最新方法
  • jsp网站首页怎么做阿里云盘资源搜索引擎
  • 宣威网站建设竞价网
  • 如何用自己电脑做销售网站百度学术官网入口
  • 网站初期seo怎么做网络营销郑州优化推广公司
  • 专业网站建设专业网站设计同城引流用什么软件
  • 可以做游戏的网站有哪些方面东莞企业网站排名
  • 自己做的网站怎么赚钱站长工具怎么关闭
  • 做钓鱼网站seo快速排名服务
  • 建网站啦唐山百度提升优化
  • 做网站卖衣服物流包年多少钱北京已感染上千万人
  • 网站被挂马做js跳转厦门seo网站管理
  • dw做的网站怎么上传图片千瓜数据
  • 西安做网站的公司热线电话找客户资源的软件哪个最靠谱
  • 芜湖市住房和城乡建设厅网站首页竞价托管资讯
  • 武汉成交型网站搭建网站的五大步骤
  • 网站域名空间到期自己怎么续费网站设计费用
  • 传媒公司经营范围有哪些沧州搜索引擎优化
  • 宁波网站设计服务新闻类软文营销案例
  • 网易游戏无锡seo排名收费
  • 深圳靠谱做网页公司seo搜索排名优化
  • 网站建设和优化的营销话术百度关键词排名十大排名
  • sns社交网站 建设文档seo网站推广的主要目的
  • 南通模板自助建站焦作关键词优化排名
  • php素材网站源码免费下载百度营销客户端
  • 济南建网站市场百度网站推广怎么做
  • 做网站 广告 备案东莞seo
  • 重庆模板建站定制网站颜色广告