Junit单元测试多线程
Junit单元测试多线程
- Main方法里执行多线程 vs 使用Junit测试多线程
- main方法调用结果
- Junit测试结果
- 解决方法
先说结论:Junit不支持多线程,在主线程执行完后,无论是否是守护线程,都会直接退出。导致子线程可能未执行结束。
Main方法里执行多线程 vs 使用Junit测试多线程
用于测试的多线程类:
public class MultiThreadCls {public void func() {System.out.println("func start");ExecutorService threadPool = Executors.newFixedThreadPool(); // 默认为非守护for (int i = 0; i < 5; i++) {int finalI = i;threadPool.execute(() -> {System.out.println("in tread:" + finalI);});}threadPool.shutdown();System.out.println("func end");}
}
main方法调用结果
执行完主线程后,等待子线程也执行完成后才退出
Junit测试结果
有几个子线程未执行就退出
解决方法
为了不修改被测试类,可以在单元测试最后等待,不退出主线程。如:
Thread.sleep(5000);
若能估计子线程什么时候结束,可以单位测试最后sleep
System.in.read();
若估计不了结束时间,等待键盘输入结束,手动结束测试
如果方便修改被测试类,可以选择CountDownLatch工具类,或jion住子线程的方法。
Junit单元测试多线程相关推荐
- android 单元测试 多线程,多线程之单元测试(Junit)
多线程测试服务 1.新建一个核心数为100 的线程池 ExecutorService service = Executors.newFixedThreadPool(100); 2.执行一个阻塞不大的任 ...
- Junit单元测试不支持多线程测试问题全解析
一.背景 今天@段段提出了一个很好的问题,她发现单元测试时如果开多个线程,主线程运行结束就结束了,并不会等待子线程结束. 如果用main方法就没问题,技术群里展开了激烈的讨论. 本文将"复现 ...
- JUnit单元测试、网络编程
JUnit单元测试.网络编程 今日内容 JUnit单元测试 网络编程 第一章 JUnit单元测试 1.简介 Junit是什么 * Junit是Java语言编写的第三方单元测试框架(工具类) * 类库 ...
- JUnit单元测试依赖包构建路径错误解决办法
JUnit单元测试依赖包构建路径错误解决办法: 选中报错的项目文件夹→右击选择属性(ALT+Enter)→java构建路径→库→添加库→JUnit→选择合适的Junit库版本.
- Junit单元测试需要知道的一些知识点
Junit单元测试框架-基于java语言对的主流单元测试框架 @beforeClass-位于数据准备前期或者其他前期准备(测试类调用前) --用于提取代码中的共用部分减少冗余,只能声明注解一次 --必 ...
- java中JUnit单元测试的使用方法
package com.atguigu.java2;import java.sql.Date;import org.junit.Test;/** java中的JUnit单元测试* 步骤:(可以直接写@ ...
- JUnit单元测试中的setUpBeforeClass()、tearDownAfterClass()、setUp()、tearDown()方法小结
编写JUnit单元测试的时候,会用到 setUpBeforeClass().tearDownAfterClass().setUp().tearDown()这四个方法,例如用 eclipse新建一个ju ...
- SSM中进行Junit单元测试时无法注入service
场景 在SSM项目中进行Junit单元测试时调用外部的service时,在使用时打断点发现为空. 代码如下: public class AlipayTester {private PassOrderS ...
- surefire 拉起 junit 单元测试类 源码阅读(一)
根据surefire 拉起Junit单元测试类 输出的报错日志 跟踪执行过程: 日志1: java.lang.reflect.InvocationTargetExceptionat sun.refle ...
最新文章
- SAP RETAIL 为物料组指派Merchandise Hierarchy Level Code
- 《高可用MySQL》2 – 单机版MySQL主从配置
- 设计模式(2): 观察者模式-1
- Linux2.6内核驱动与2.4的区别 .
- TML5 App 开发框架收集
- Atitit 保证产品易用性的方法总结 目录 1. 什么是易用性 易学 易见 三角关系	1 2. 易用性原理 三原则 易见 映射 反馈	2 2.1. 易见 Visibility 可读性	2 2.2.
- 【板栗糖GIS】kmz数据是什么,如何打开,普通数据如何转换成kmz格式
- 完全卸载vs2008
- 《缠论》的精髓是什么?
- html照片360度旋转展示,纯js实现360度旋转预览图片特效
- 对偶的应用及拓展(Duality Uses and Correspondences)
- 《Linux内核 学习笔记》--- 第二章 内存管理 2.9 mmap
- splits——安卓gradle
- 【Android Studio】ImageView / ImageButton 图片太大或者太小解决方法
- iOS-通俗易懂的微信支付接入和爬坑指南,十分钟轻松搞完
- Markdown语法文档,Markdown教程,Markdown语法大全,
- 为梦想加油:7个值得深思的名人财富故事
- true在php中代表,true是什么意思
- 关于springmvc静态资源常被忽视,有可能致命的点
- 光纤激光器仿真:(5)类噪声脉冲