1.junit Դ?码阅??Ķ?
2.单元测试实践
3.如何在Intellij IDEA中添加JUnit单元测试
4.JUNIT IN ACTION中文版目录
junit Դ???Ķ?
在 IDEA 中使用 JUnit 进行单元测试的步骤可以简化为三个核心部分:插件添加、配置设置与测试实现。码阅
首先,码阅确保在 IDEA 中安装了 JUnit 插件。码阅若未安装,码阅可通过“File”菜单下的码阅卖房商城源码“Settings”选项进入设置界面,然后选择“Plugins”模块进行搜索并安装 JUnit 插件。码阅
接着,码阅针对 JUnit 的码阅配置,需对测试文件的码阅生成位置进行指定。位置应设为“test/java”目录下,码阅具体可命名为“test/junitTest”,码阅文件命名自定。码阅
配置完成后,码阅建议修改 JUnit 的码阅模板设置以适应项目需求。操作路径为“File”菜单下的“Settings”,然后选择“Other Settings”模块中的“Junit Generator”,将 JUnit 模板设置为“Junit4”。这里,配置的最新桃彩源码“Package”是指测试文件生成的包名,而“Today”选项可能并不适用。
在 IDEA 的项目目录下,通常会发现三个关键的 JUnit 相关包文件,它们应当被导入至当前项目中。
对于 JUnit 的使用方式,有以下两种常见途径:
- **手动创建目录**:推荐按模块(Module)进行测试,每个模块对应一个测试文件。操作方法是在需要测试的类中,通过右键选择“Go To”>“Test”>“Create New Test…”创建测试类。选择创建新测试类时,需指定测试类文件的生成位置为“JunitTest”,并选择“JUnit4”作为单元测试库。同时,可勾选“setUp/@Before”执行测试前的操作,并选择需要进行测试的方法。点击“OK”后,测试文件将生成,通常格式为:首先声明测试对象,接着在“before”方法中创建对象;最后在带“@Test”的2017诱导支付源码方法中进行具体测试。点击方法左侧箭头运行测试方法。
- **自动生成测试类**:在项目“src”目录下,选择要测试的类名,通过右键选择“generate”或使用快捷键“Alt+Insert”,选择“JUnit Test”>“JUnit4”生成测试文件。文件应位于项目根目录下“src”与“test/java”目录下,与源代码文件同级。使用此方式生成的测试文件与手动创建的测试文件使用方法相同。
在使用 JUnit 进行测试时,需注意以下几点关键点:
- 测试文件所在目录应设定为“Test Source Root”,通常显示为绿色,表示该目录为测试资源路径。
- 在创建测试类时,务必选择“JUnit4”作为测试库,确保测试类能够正确执行。
- 确保测试类与相关源代码文件在相同的资源路径下,且测试类外层文件已设置为测试资源路径。
遵循以上步骤与注意事项,即可在 IDEA 中高效地使用 JUnit 进行单元测试,apicloud 获取网页源码确保代码质量与功能稳定性。
单元测试实践
非常有意思的一段话:
我们用得最多的基本单元测试框架是junit和testng,下面对这两个工具做个对比。
通过上面的对比可以看出,TestNG作为Java项目的单元测试框架是更有优势的,TestNG在参数化测试、依赖测试、套件测试、分组测试、并发测试等方面都比Junit4强,同时,TestNG涵盖了JUnit4的全部功能。
所以下面的案例说明都是基于TestNG来写的。
为方便对后面内容的理解,先写一个单元测试:
这是一个验证rsa加解密功能的单元测试。
TestMain是抽象出来,用于启动spring容器以及支持testng用例自动注入bean,因为启动spring容器总是很耗时的,如果我们的phantomJS抓取网页源码测试用例用不到依赖的spring bean,最好不雅启动spring容器,TestMain源码:
这就是TestMain最好放在和工程Application类所在包相同路径下的原因,比如我的示例中TestMain和BoardServerApplication都在相同包路径下:com.allawn.athletic.board.server。
检查TestNG插件是否存在
插件搜索“Coverage”
在我们的pom文件下加如下plugin配置:
idea插件自带,带搜索插件“PIT mutation testing”,但不建议用,很难调通!
本地开发环境
IDE自动创建单元测试的方法(也可手动完成):
创建后的单元测试在Maven工程的test目录下生成测试类:
注意:如果之前没有test目录,则需要手动创建一下:
然后再把目录设置为test目录。设置方法:file -> Project Structure -> Modules
运行单元测试
创建单元测试
Maven执行的相关命令:
如果单元测试不通过,出现如下:
两种方式皆可运行。
运行不通过则则会有提示
要通过maven运行单元测试,要保证pom配置没有跳过单元测试,检查设置如下:
IDEA可以直接生成覆盖率报告,导出来的覆盖率报告长这样:
点击index.html即可看报告内容:
变异测试,英文Mutation Testing,是使用变异器 (切换数学运算符,更改返回类型,删除调用等)将代码修改为不同的变异(基于变异器创建新代码),并检查单元测试是否失败。好的单元测试应该使所有突变都失败(杀死)。
主要列出testng的测试方法,junit的测试方法请另行百度。
异常测试是指在单元测试中应该要抛出什么异常是合理的,可以检测我们方法中指定跑出的异常,类似这种:
如果我们有时候不想测试某些方法的单元测试,那么我们可以指定这些具体的单元测试跳过不执行,testng和junit4都支持忽略测试,testng通过@Test(enabled=false)跳过。
指定某个单元测试方法最长执行时间,如果超时了就算失败,testng中的timeout单位是毫秒。
套件测试是指把多个单元测试组合成一个模块,然后一起运行,在套件定义中还可以通过定义组,针对相同组名的单元测试统一运行。
为方便我们模拟单元测试的传参,testng提供了@DataProvider注解,我们可以在单元测试内设置多种参数值,单元测试会依次把入参都跑一遍。被@DataProvider修饰的方法,返回值是数组形式。
依赖测试是指测试的方法是有依赖的,在执行的测试之前需要执行的另一测试。如果依赖的测试出现错误,所有的子测试都被忽略,且不会被标记为失败。
TestNG支持通过多个线程并发调用一个测试接口来实现性能测试,invocationCount表示方法调用的次数,threadPoolSize表示并发线程数量,timeOut即是每次调用最大耗时时间。
通过多线程并行调用多个测试方法,在我们套件/组测试的时候,如果使用并行测试,可以大大减少测试运行时间。
Mock的使用场景:
Mockito有比较简洁的API,简单易学,可读性强。从Mockito2开始,Mockito支持了很多新特性以及新注解(所以依赖mockito2.x以上版本的需要java8及以上jdk方可),使用很便捷,spring-boot-starter-test包默认内置mockito,鉴于维护性和语言新特性的支持,个人建议使用Mockito作为单元测试的mock工具。
在有需要的地方进行mock,否则走真实方法调用。
除了采用静态方法spy以外,还可以通过采用注解的方式:
结果示例:
除了@Spy注解需要如此设置,@Mock、@Captor、@InjectMocks等注解也需要。
对整个class进行mock
结果:
Junit5使用手册: junit.org/junit5/docs/c...
在Junit5中要使用Mockito,需要单独引入mockito-junit-jupiter依赖包,通过在单元测试类上加
@ExtendWith(MockitoExtension.class)
实现构建一个mock运行容器。
在有需要的地方进行mock,否则走真实方法调用。
除了采用静态方法spy以外,还可以通过采用注解的方式:
结果示例:
结果:
如何在Intellij IDEA中添加JUnit单元测试
在IntelliJ IDEA中添加JUnit单元测试的步骤如下:
首先,确保你已经下载了JUnit 4.-beta-1和hamcrest.core 1.3.0.1的jar包。由于4.版本的JUnit与hamcrest.core 2.1版本不兼容,所以请务必下载推荐的这两个版本,从官方网站或第三方网站jar-download.com下载。在添加到IDEA项目时,记得勾选Export选项,以便正确导入。
其次,推荐使用名为JUnitGeneratorV2.0的插件来简化测试文件的管理。在IDEA中下载并安装该插件,然后进行设置,如将输出路径改为'({ SOURCEPATH}/../test/){ PACKAGE}/${ FILENAME}',这样测试文件会根据你的配置自动存放在指定的test目录下。若使用Ctrl+Shift+T自定义测试,生成的文件将保存在你先前设置的目录。
创建一个与源代码文件夹(如scr)同级的test文件夹,作为存放测试类的专用区域。然后,在项目设置中,将这个文件夹设置为JUnit生成测试文件的默认路径。
当你需要编写测试时,只需在目标类中使用快捷键Alt+Insert(或者Code-Generator)选择JUnit-JUnit4,IDEA会自动生成对应的测试类,包含所有或选中的方法。通过Ctrl+Shift+T,你可以灵活选择测试的方法。
现在,你已经准备好在IntelliJ IDEA中使用JUnit进行单元测试了,只需编写测试代码,IDEA将帮助你快速完成测试类的生成和管理。
JUNIT IN ACTION中文版目录
目录 译序iii 前言xi 致谢xv 关于本书xvii 关于作者xxi 关于书名xxii 关于封面xxiii 第1部分——JUnit精粹 第1章——JUnit起步 1.1证实它能运作 1.2从头开始 1.3理解单元测试框架 1.4安装JUnit 1.5用JUnit测试 1.6小结 第2章——探索JUnit 2.1探索JUnit核心 2.2用Test Runner运行测试 2.3用TestSuite组合测试 2.4用TestResult收集参数 2.5用TestListener观察结果 2.6用TestCase工作 2.7创建TestCalculator全过程 2.8小结 第3章——JUnit实例 3.1引入Controller组件 3.2让我们来测试吧 3.3测试异常处理 3.4建立测试项目 3.5小结 第4章——探索软件测试 4.1单元测试的必要性 4.2不同种类的测试 4.3判断测试质量 4.4测试驱动开发 4.5在开发周期中的测试 4.6小结 第5章——JUnit自动化 5.1生命中的一天 5.2从Ant中执行测试 5.3从Maven运行测试 5.4从Eclipse中运行测试 5.5小结 第2部分——测试策略 第6章——用Stub进行粗粒度测试 6.1Stub简介 6.2一个HTTP连接的例子 6.3替换web服务器资源 6.4总结 第7章——用Mock Objects进行孤立测试 7.1Mock Objects简介 7.2体验Mock Objects:一个简单例子 7.3把Mock Objects用作重构手法 7.4实践HTTP连接示例程序 7.5把Mock Objects用作特洛伊木马 7.6决定何时使用Mock Objects 7.7小结 第8章——使用Cactus进行容器内测试 8.1对组件进行单元测试的问题 8.2用Mock Objects测试组件 8.3什么是集成单元测试 8.4介绍Cactus 8.5用Cactus测试组件 8.6Cactus如何工作 8.7小结 第3部分——测试组件 第9章——对Servlet和Filter进行单元测试 9.1介绍管理应用程序 9.2用Cactus编写Servlet测试 9.3用Mock Objects测试Servlet 9.4用Cactus写Filter测试 9.5何时使用Cactus,何时使用Mock Objects 9.6小结 第章——对JSP和Taglib进行单元测试 .1回顾管理应用软件 .2什么是JSP单元测试 .3单独使用Cactus对JSP进行单元测试 .4使用Cactus对Taglib进行单元测试 .5用Mock Objects对Taglib进行单元测试 .6何时使用Mock Objects,何时使用Cactus .7小结 第章——对数据库应用程序进行单元测试 .1对数据库进行单元测试的介绍 .2隔离开数据库测试业务逻辑 .3隔离开数据库测试持久性代码 .4数据库集成单元测试的编写 .5用Ant运行Cactus测试 .6改进构建性能 .7数据库整体单元测试策略 .8小结 第章——对EJB进行单元测试 .1定义一个简单的EJB应用程序 .2使用Facade策略 .3使用Mock Objects对JNDI代码进行单元测试 .4对Session Bean进行单元测试 .5使用Mock Objects测试Message-Driven Bean .6使用Mock Objects测试Entity Bean .7选择正确的Mock Objects策略 .8使用集成单元测试 .9使用JUnit和远程调用 .使用Cactus .小结 A.源代码说明 A.1获取源代码 A.2源代码概览 A.3外部库 A.4jar版本 A.5目录结构惯例 B.eclipse快速上手 B.1安装eclipse B.2从源代码中建立eclipse项目 B.3从eclipse中运行junit测试 B.4从eclipse中执行ant脚本 B.5从eclipse中运行cactus测试 参考文献 索引