junit测试环境搭建(遇到的坑)

JUnit 5测试环境搭建与Hamcrest断言库实战指南 单元测试是软件质量保障的基石,其核心在于验证代码单元在隔离环境下的行为是否符合预期。JUnit作为Java领域最主流的测试框架,其原理是通过注解驱动测试生命周期,配合断言机制进行结果验证。然而,仅使用基础的JUnit断言往往导致测试代码可读性差、维护成本高,难以清晰表达复杂的验证逻辑。为此,引入Hamcrest这类匹配器库能显著提升断言的表达力,它采用声明式的匹配器组合方式,让测试意图如自然语言般清晰,同时生成更友好的失败信息。在**企业级Java项目**中,结合Maven或Gradle构建工具,搭建一个包 阅读详情

1.pom.xml 

里面加入 

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>

2. 代码路径

其中resources路径是配置文件

/test/java下面是测试代码


3. 测试文件


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:config/applicationContext.xml"})
@Transactional
//@TransactionConfiguration(defaultRollback=false) 
public class GenericDAOTest {


	@Autowired
	private AttrUnitDao attrUnitDao;


	@Test
	public void testInsert() {
		List<Map<String, Object>> unitList = attrUnitDao.getUnitList();
		System.out.println(unitList.size()+" --------------------------------");
		AttrUnit tmp = new AttrUnit();
		tmp.setCode("121");
		tmp.setName("miqi");
		tmp.setType(123);
		attrUnitDao.save(tmp);
		System.out.println(unitList.size()+" --------------------------------");
	}


}

4 执行报错

  a 首先提示 Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'redis.maxIdle' in string value "${redis.maxIdle}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174)

    在下面文件中 找不到对应的redis.properties 文件 

 <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">  
        <property name="maxIdle" value="${redis.maxIdle}" />  
            <property name="testOnBorrow" value="${redis.testOnBorrow}" /> 
    </bean> 
redis.xml 加入 <context:property-placeholder location="classpath:redis.properties" />  依然无效
直接把redis.properties里对应的值填进到redis.xml里面
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">  
        <property name="maxIdle" value="300" />  
        <property name="testOnBorrow" value="true" /> 
</bean>  
    
问题暂时解决 涉及到这种的xml都要改
    b 接着提示  java.lang.NoClassDefFoundError: org/springframework/cglib/core/CodeGeneratio。。。
加入一下依赖
 <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.8.RELEASE</version>
        </dependency> 
继续报异常 Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: 
查到是包依赖冲突
tomcat 这时候也起不来了。。<span style="font-family:Arial, Helvetica, sans-serif;">查找maven 依赖树 dependency hierarchy </span><pre name="code" class="html" style="font-family: Arial, Helvetica, sans-serif;">是加入<span style="font-family: Arial, Helvetica, sans-serif;">spring-core依赖导致的。。有版本冲突spring-webmvc里面版本是3.1.2但是去掉又会报</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="html">java.lang.NoClassDefFoundError: org/springframework/cglib/core/CodeGeneratio  spring 项目里面jar都是3.1.2
应该是比spring4 少了些类 ,将spring版本统一提高到4.0.2
<span style="white-space:pre">	</span><org.springframework-version>4.0.2.RELEASE</org.springframework-version>
<span style="white-space:pre">		</span><org.aspectj-version>1.6.9</org.aspectj-version>
<span style="white-space:pre">		</span><org.slf4j-version>1.7.2</org.slf4j-version>
<span style="white-space:pre">	</span></properties>

<span style="white-space:pre">	</span><repositories>
<span style="white-space:pre">		</span><repository>
<span style="white-space:pre">			</span><id>public</id>
<span style="white-space:pre">			</span><!-- <url>http://192.168.2.115:8081/nexus/content/groups/public/</url> -->
<span style="white-space:pre">			</span><!-- <url>http://repository.sonatype.org/content/groups/public/</url> -->
<span style="white-space:pre">			</span><url>https://repo.maven.apache.org/maven2/</url>
<span style="white-space:pre">			</span>
<span style="white-space:pre">		</span></repository>
<span style="white-space:pre">	</span></repositories>

<span style="white-space:pre">	</span><dependencies><span style="white-space:pre">		</span>
<span style="white-space:pre">		</span><!-- Spring -->
<span style="white-space:pre">		</span><dependency>
<span style="white-space:pre">			</span><groupId>org.springframework</groupId>
<span style="white-space:pre">			</span><artifactId>spring-webmvc</artifactId>
<span style="white-space:pre">			</span><version>${org.springframework-version}</version>
<span style="white-space:pre">		</span></dependency>


<span style="white-space:pre">		</span><dependency>
<span style="white-space:pre">			</span><groupId>org.springframework</groupId>
<span style="white-space:pre">			</span><artifactId>spring-jdbc</artifactId>
<span style="white-space:pre">			</span><version>${org.springframework-version}</version>
<span style="white-space:pre">		</span></dependency>


<span style="white-space:pre">		</span><dependency>
<span style="white-space:pre">			</span><groupId>org.springframework</groupId>
<span style="white-space:pre">			</span><artifactId>spring-orm</artifactId>
<span style="white-space:pre">			</span><version>${org.springframework-version}</version>
<span style="white-space:pre">		</span></dependency>
----------------

<span style="font-family:Arial, Helvetica, sans-serif;"> 问题ok 可以编译通过。。</span>
<span style="font-family:Arial, Helvetica, sans-serif;">
</span>
<span style="font-family:Arial, Helvetica, sans-serif;">测试代码事物自动回滚</span>
<span style="font-family:Arial, Helvetica, sans-serif;"></span><pre name="code" class="java">@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:config/applicationContext.xml"})
@Transactional
<strong>//@TransactionConfiguration(defaultRollback=false) //加入该句后依然还是事务回滚 有空看看什么情况,,</strong>
public class GenericDAOTest {



<span style="font-family: Arial, Helvetica, sans-serif;">
</span>



JUnit4测试容器化实战:基于GCP Cloud Run构建一致性测试环境 在软件开发和持续集成中,测试环境的一致性和可复现性是保障软件质量的关键挑战。容器化技术通过将应用及其依赖打包成标准单元,从根本上解决了环境差异问题。Docker作为主流容器平台,结合多阶段构建等策略,能高效创建轻量级、可移植的运行时镜像。将测试套件容器化,不仅实现了环境隔离,更使其成为可独立部署、按需执行的服务单元。借助无服务器容器平台(如GCP Cloud Run),可以按请求拉起容器实例执行测试任务,实现资源的极致弹性与成本优化。这种模式特别适用于Java项目中的JUnit4测试套件,通过将测试执行包装 阅读详情

相关推荐

JUnit测试环境搭建与Hamcrest-Core实战指南

Hamcrest-Core 是 Java 单元测试中不可或缺的断言匹配库,它通过提供丰富的匹配器(Matcher)使测试逻辑更清晰、更具语义化。其核心设计理念在于“可读性强、可扩展性高”,允许开发者通过自然语言风格的断言表达提升代码可维护性。Hamcrest 与 JUnit、TestNG 等主流测试框架无缝集成,尤其在 JUnit 中,结合assertThat方法使用,极大增强了断言的表现力。在本章中,我们将深入了解 Hamcrest 的基本结构、应用场景以及其在现代测试实践中的重要地位。

weixin_42430341的博客 728

配置junit+TOMCAT配置和环境变量

好久没弄JUNIT了,环境报错了,很是着急今天从新下载的文件,整理了下,总结如下:1.添加JUNIT3.8.1的文件:project—properties,点java build path——libraries选 add external jars,把junit目录下的junit.jar选上即可。 TOMCAT大概三年没用了吧,今天配置了一下,费了好大力气,BAIDU还是很

yyu0315的专栏 3696

【遥感数字图像处理(朱文泉)】第一章 数字图像基础

关于图像的定义、类型、模拟图像和数字图像

甜子yu的博客 4404

(‘junit-jupiter’ failed to)java.lang.NoClassDefFoundError: org/junit/platform/e。。。/SelectorResolver

报错: 二月 07, 2022 9:59:52 下午 org.junit.platform.launcher.core.DefaultLauncher handleThrowable 警告: TestEngine with ID ‘junit-jupiter’ failed to discover tests java.lang.NoClassDefFoundError: org/junit/platform/engine/support/discovery/SelectorResolver at org.

lsllll44的博客 2305

MMORPG网络游戏开发之任务系统的架构与设计

在网路游戏中做任务已经成为游戏很重要的一个核心功能和玩法,如何做好一个灵活可扩展的任务系统的架构与设计,今天来给大家分享一些我们的设计经验。接下来我把整个的任务系统分成以下6个模块:对于单机游戏而言,这6个模块都放在客户端直接处理,对于网路游戏而言,模块1~5实现在服务端,模块6实现在客户端。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。...

voidinit的专栏 3049

Rstudio安装org.Hs.eg.db

自己也是个小白,初次安装org.Hs.eg.db碰到好多问题,步骤总结如下: 第一,instal.packages()安装,不行则换 BiocManager::install() 第二,如BiocManager不成,说明不是最新版本,可按提示安装最新版 BiocManager::install(version = '3.13') #由于R版本较新,按照提示中的相关信息,安装最新版本的 第三,再次安装 BiocManager::install("org.Hs.eg.db") 第四,之后每个人.

ZH_DDong的博客 2万+

2.2.6.RELEASE版本的springboot 单元测试报错 java.lang.NoClassDefFoundError: org/junit/platform/engine/support/

新建了一个2.2.6.RELEASE版本的springboot项目,在用单元测试的时候,发现没有@RunWith注解,于是,就添加了 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> 好,现在有这个注解了,运行测试方法,报错java.l.

wit_cx的博客 951

Win7/Win10双系统兼容指南:Arduino IDE 1.8.19与2.3.2的安装避坑全攻略

本文详细解析了在Win7/Win10双系统环境下安装和配置Arduino IDE 1.8.19与2.3.2版本的完整指南,特别针对ESP32开发环境的深度配置和COM端口常见问题提供了实用解决方案。通过版本对比、安装优化和性能调优,帮助开发者高效搭建稳定的物联网开发环境。

weixin_30500105的博客 187

junit启动tomcat来进行单元测试

1.pom.xml配置下载需要的jar。    <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version>...

diaolaoqiao5667的博客 1654

亿佰特E77模块(STM32WLE5CCU6)LoRa通信实战指南:从配置到应用开发

本文详细介绍了亿佰特E77模块(STM32WLE5CCU6)的LoRa通信实战指南,从硬件配置到应用开发。基于ARM Cortex-M4内核的E77模块集成了LoRa射频前端,具备超低功耗和硬件级抗干扰特性,适用于智能农业、工业现场等场景。文章提供了开发环境搭建、LoRa参数配置、实战通信及性能优化等实用技巧,帮助开发者快速掌握LoRa通信技术。

weixin_29164185的博客 762

【HFSS】仿真目录

Author: JiJi\textrm{Author: JiJi}Author: JiJi Created Time: 2026.04.27\textrm{Created Time: 2026.04.27}Created Time: 2026.04.27 Modified Time: 2026.04.27\textrm{Modified Time: 2026.04.27}Modified Time: 2026.04.27如果大家觉得有用,就点个赞吧,在阅读过程中存在任何困惑,可在下方评论区留言~

u011699626的博客 310

Ddisasm开发指南:贡献代码前必须了解的Datalog逻辑与测试流程

Ddisasm作为一款快速准确的反汇编工具,其核心功能依赖于Datalog逻辑规则和完善的测试体系。本文将详细介绍贡献代码前需要掌握的Datalog核心模块与测试流程,帮助开发者快速融入项目。 ## Datalog核心模块解析 Ddisasm的反汇编逻辑主要通过Datalog规则实现,位于`src/datalog`目录下,包含多个功能模块: ### 控制流分析模块 `src/datalog/

gitblog_00007的博客 1068

搞定ESD(五):静电放电问题分析与调试

前面深入分析了静电放电的干扰机理、耦合路径,从现在开始将进入下一个大家非常关注的环节:静电放电问题分析与调试,掌握静电放电问题的分析方法,快速锁定敏感设备或者耦合路径,可以达到事半功倍的效果。

记得诚 2795

Java测试环境搭建全攻略:从JDK到Maven到JUnit的实战踩坑

在Java项目开发中,测试环境的稳定性直接影响交付效率。很多开发者本地运行正常,一上测试环境就报错,根源在于对测试环境分层理解不清、JDK版本与Maven配置不一致、Spring Profile切换不当。本文从测试环境的三个层次切入,系统讲解JDK版本选型与JAVA_HOME配置、Maven镜像与settings.xml优化、JUnit 5与Mockito组合实践,以及多环境配置管理的核心原则。通过梳理从本地到CI的自动化延伸,总结出版本一致性、配置隔离、依赖冲突排查等关键方法论,帮助读者构建可预期、可复现

weixin_32308101的博客 262

DSP开发环境及工具之CCS

CCS( Code Composer Studio)是美国德州仪器(TI)公司的嵌入式处理器的开发环境,可以用于TI公司的各个系列处理器的软件开发和调试,如DSP,MCU,ARM等。CMD的专业名称叫链接器配置文件,是存放链接器的配置信息的,我们简称为命令文件。从其名称可以看出,该文件的作用是指明如何链接程序的。编辑完C语言设置,添加cmd文件之后,然后检查编译配置选项。主要的操作都是在这个窗口之间做相应的切换。

小柚子的博客 4311

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

REST API接口测试实战:MockMvc + JUnit 5从入门到踩坑

REST API接口测试是后端质量保障的重要环节,涉及状态码、参数绑定、JSON序列化等多个层面。MockMvc作为Spring MVC测试的核心组件,能够在模拟HTTP请求的同时验证路由与响应结构;JUnit 5则提供更灵活的测试生命周期与断言机制,两者结合可高效覆盖Controller层逻辑。通过配置测试环境、构造请求、断言jsonPath等操作,开发人员可以快速定位接口缺陷,并借助Mockito隔离外部服务依赖。这类测试广泛应用于单元测试、切片测试与集成测试场景,为持续重构和回归验证提供稳定支撑。本文

weixin_32576389的博客 245

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

springboot下配置junit测试环境

项目中使用到了spring_boot,我想在项目中写一些单元测试,但是由于对springboot 不熟悉并且springboot的中文资料非常的少,所以花了很长的时间才把springboot的junit测试环境搭好,虽然很简单,但是也发出来给大家参考一下吧。 一 准备 1 首先编写一个测试环境基类BaseDaoTest package com.gome.superman.web.bussin

做事要专心 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IDEA下Maven的Junit测试环境配置

Junit包下载 pom.xml 依赖可以在 这里 上获取 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <v...

sailist的记录站 2856

Java 单元测试入门:从零搭建 JUnit 5 测试环境

Java 初学者学习单元测试使用 Maven 管理项目依赖关键点说明与操作指引包名一致性测试代码()下的包路径,必须与业务代码()下的包路径完全一致JUnit 版本冲突如果pom.xml中同时存在(旧版)和(新版),IDEA 可能会混乱。解决办法:必须彻底删除旧版依赖@Test 注解导包请确保代码中的@Test导入的是。切勿错选成或测试方法权限JUnit 5 的测试方法可以是public或default(无修饰符),但不能是private,否则无法运行静态方法测试。

weixin_46191006的博客 552

jenv与JUnit集成:测试环境Java版本控制

你是否曾在JUnit测试中遭遇过`UnsupportedClassVersionError`?或者花费数小时调试只因CI环境使用了与开发机不同的JDK版本?作为Java开发者,我们每天都在与版本兼容性问题搏斗——尤其当项目需要同时支持Java 8、11和17时。本文将展示如何通过jenv(Java环境管理工具)与JUnit构建无缝集成的测试环境,实现"一行命令切换Java版本,零配置保障测试一致性...

gitblog_00288的博客 1151

你如何创建一个JUnit测试类,并编写一个基本的测试方法?在JUnit中,你如何设置和清理测试环境?

请注意,为了运行这个测试,你需要确保你的开发环境已经配置好了JUnit,并且你的项目已经包含了JUnit的依赖。此外,JUnit 4还提供了@Before和@After注解,它们的行为与JUnit 5中的@BeforeEach和@AfterEach类似。在测试类的顶部,使用@RunWith注解(对于JUnit 4)或继承JUnitJupiter(对于JUnit 5),来指定测试运行器。在JUnit 5中,这通常是隐式的,因为JUnit 5使用了一个不同的编程模型。在测试类中,编写一个或多个测试方法。

Aaron的博客 1919

junit --Eclipse下的环境搭建

大体的步骤    创建project    添加junit包    创建一个待测试的类JDemo.java    为JDemo.java创建一个Junit测试用例JDemoTest.java    运行测试     1. 创建一个project  :【new】-》【project】   (以下截图是操作过程的主要步骤,并非所有) 2.

guanning0109的专栏 9788

Selenium测试环境搭建

今天将Selenium如何进行测试环境搭建分享给大家。 1、首先到http://seleniumhq.org/download/   下载Selenium RC2.5.0和Selenium Client Drivers 2、启动Selenium RC服务,假如你下载的

杰克船长 1784

关于JUnit5 你必须知道的(一) JUnit5架构和环境搭建

由于工作中都是使用maven来构建项目,所以下面有关环境搭建都是使用的maven(IDE使用的idea) 凡是开发对于JUnit这个框架一定都不陌生,JUnit 作为一个单元测试框架已经诞生了数十年。而JUnit 5在JUnit 4发布多年后的2017年也终于发布了。 JUnit 5架构体系 作为最新版本的JUnit框架,JUnit 5相比之前版本的JUnit框架有了较大的突破,添加了许多新特性。 之前的JUnit 框架所有的功能都被打包在一个构件(artifact)中。它被提供给开发者、IDE、构建工具、

qq_35448165的博客 1869

3分钟搞定!JUnit4 + H2内存数据库极速测试环境搭建指南

你还在为Java测试环境配置焦头烂额?数据库连接超时、测试数据污染、环境一致性难题... 本文将带你用JUnit4 + H2内存数据库搭建零依赖、秒启动的测试环境,读完即可掌握: - 3步完成嵌入式数据库集成 - 5行代码实现测试数据自动初始化 - 100%隔离的测试用例设计模式 ## 为什么选择H2内存数据库? H2数据库(HyperSQL Database)是一款纯Java编写的嵌入式数据...

gitblog_00402的博客 433

springboot使用junit5/junit4

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage 其中 JUnit平台,其主要作用是在JVM上启动测试框架。它定义了一个抽象的TestEngineAPI来定义运行在平台上的测试框架,同时还支持通过命令行、Gradle和Maven来运行平台。 JUnit Jupiter,包含了JUnit5最新的编程模型和扩展机制。 JUnit Vint...

u011165335的博客 6481
上一篇: Maven类包冲突终极解决小技若干
下一篇: 高可用的工作心得分享
琅琊山二当家
博客等级 码龄18年 447粉丝 322原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值