在使用@SpringBootTest测试时可以指定一个端口,如@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) 或 @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT),这样在测试时会启动Spring内嵌的Http Server。 这…
分类目录归档:java测试
Spring Controller层测试 – 04 SpringBootTest & MockMVC
这种测试方案会加载完整的SpringContext,但我们仍然不需要Web Server,需要继续通过MockMVC来模拟请求。
在测试的时候主要用到了@SpringBootTest注解。看下代码:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
Spring Controller层测试 – 03 WebContext & MockMVC
这种Controller层测试方案会(部分)加载Spring Application Context。不过仍然还是主要是用MockMVC来进行测试,也不需要部署WebServer。
示例代码如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
Spring Controller层测试 – 02 Standalone MockMVC
在Spring中,可以在Standalone模式下使用MockMVC来进行服务内测试,此时我们不会加载任何Context。来看个例子:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
Spring Controller层测试 – 01 概述
Spring Controller层(Web层或API层)的测试有多种方案。有人倾向于使用纯单元测试,有人则倾向于使用集成测试。
单元测试和集成测试
先来看一下单元测试和集成测试的概念。
单元测试
单元测试是对软件中的最小可验证单元进行检查和验证。比如对Java中的类和方法的测试。
测试原则:
- 尽可能保证测试用例相互独立(测试用例中不能直接调用其他类的方法,而应在测试用例
SpringBoot集成Jersey的单元测试方案
使用SpringBoot集成Jersey做单元测试时遇到了application.xml找不到的提示。详情如下:
|
1 2 3 4 |
Caused by: java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist at org |
在命令行执行JMeter测试计划
有时候会需要在linux的命令行上运行JMeter,简单说一下做法:
- 在图形界面上创建测试计划,并保存生成的test_plan.jmx文件;
- 将生成的test_plan.jmx文件上传到linux服务器;
- 在linux的命令行执行如下指令:
|
1 |
jmeter -n -t ${path}/test_plan.jmx |
其中-n说明不是在图形界面下执行,-t指示了测试计划文件…
使用JMeter + PerfMon做远程监控
本文假设已经安装好了JMeter
下载插件
PerfMon并不是JMeter原生的工具。要使用这个工具还需要下载一些插件。下载地址是jmeter-plugins.org。在JMeter Plugins的下载页面可以看到如下需要下载的内容:
下载用红框圈起来的前两个压缩包即可。
下载完成后。将第一个压缩包JMeterPlugins-Standard-1.3.1.zip解…
基于JMeter进行分布式测试
我工作中的笔记本配置还可以。但是在测试一个简单的TCP连接时,发现把线程数设置为10000时,我的笔记本会很快死掉。最终实验出我的笔记本可以承受的安全线程数是5000。可是对应用的最低性能要求就是能承受1w的并发。此时可以采用基于JMeter的分布式测试方案。
如刚才提到的,要求测试应用在1w并发下的表现,而一部计算机所能承受的线程数是5000,那么需要两部计…
JMeter监听器说明
JMeter的监听器可以理解为JMeter提供的测试分析工具(或者测试结果报告)。JMeter监听器的监听范围是当前节点及其子节点。JMeter提供了多种测试监听器,这里简单说几个用过的监听器。
创建测试计划
为了演示监视器的作用,我这里做了一个简单的HTTP请求测试。
如何创建测试计划就不多说了,可以参看这篇文章:《使用JMeter》
下图是线程组的配置:
下图是H…