1.JUNIT IN ACTION中文版目录
2.单元测试实践
3.如何在Eclipse开发一个基于Junit的学源Java自动单元测试系统
4.如何在Intellij IDEA中添加JUnit单元测试
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测试 参考文献 索引单元测试实践
非常有意思的一段话:
我们用得最多的基本单元测试框架是junit和testng,下面对这两个工具做个对比。源码
通过上面的学源对比可以看出,TestNG作为Java项目的源码美甲帮源码单元测试框架是更有优势的,TestNG在参数化测试、学源依赖测试、源码套件测试、学源分组测试、源码并发测试等方面都比Junit4强,学源同时,源码TestNG涵盖了JUnit4的学源全部功能。
所以下面的源码案例说明都是基于TestNG来写的。
为方便对后面内容的学源理解,先写一个单元测试:
这是一个验证rsa加解密功能的单元测试。
TestMain是抽象出来,用于启动spring容器以及支持testng用例自动注入bean,因为启动spring容器总是真人娱乐系统源码下载很耗时的,如果我们的测试用例用不到依赖的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以外,还可以通过采用注解的方式:
结果示例:
结果:
如何在Eclipse开发一个基于Junit的Java自动单元测试系统
在Eclipse开发一个基于Junit的Java自动单元测试系统的方法如下:1、变量JUNIT 和JUNIT_SRC
在project 的classpath 中添加junit.jar。因此,建立一个新的classpath 变量
JUNIT。选择Window -> Preferences 菜单栏打开Preferences 对话框,如图所示。
2、展开Java 结点,选择Build Path -> Classpath Variables 项,如图所示。
3、然后点击New 按钮打开New Variable Entry 菜单,输入新的变量名: JUNIT , 配置路径为junit.jar 。在Eclipse3.0.2 中, 能够在/eclipse/plugins/org.junit_3.8.1/junit.jar 下找到junit.jar。然后点击OK,
如图 所示。
4、连接到/eclipse/plugins/org.eclipse.jdt.source_3.0.2/src/ org.junit_3.8.1/junitsrc.zip,如图所示。
5、添加后的结果如下图所示
6、建立Junit 测试
在创建Junit 测试之前一定要先导入junit.jar 包。在project “Student”上单击鼠标右键,选择Properties,然后打开Properties for Student 的属性对话框,点击Java Build Path 项和Libraries 选项,再点击Add Variable 命令按钮,进入New Variable Classpath Entry 窗口,选择JUNIT 变量,如图所示。
7、点击OK 命令按钮,完成JUNIT 变量的添加。当我们展开一个JUNIT 变量结点的时候,能够指定在何处寻找相关联的源代码和Javadoc,我们需要添加Junit 的源代码,也就是JUNIT_SRC 变量,选择结点中的Source attachement,再单击edit 打开Source Attachment Configuration 对话框,如图所示。
8、然后点击Variable 按钮,再选择JUNIT_SRC 变量,并点击OK 关闭此对话框,如所示。
如何在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将帮助你快速完成测试类的生成和管理。