junit单元测试和Main方法之多线程


遇到的问题:这两天写项目需求遇见一个大坑,代码两下写完了,测试卡了我整整一天,报错信息显示各种连接异常(oss异常或者sql异常),导致我大部分时间都陷入查找oss为什么连接不上的问题,耗费了大量时间。后来发现是单元测试时执行了异步任务的问题!把异步任务取消后,程序立马跑通了,搞了我一整天的问题终于落在帷幕,避免以后再次卡住,在此记录junit单元测试在执行多线程情况下的问题和结论,并对比junit单元测试和主程序Main方法之多线程执行。

一. 先放结论

切记junit不支持多线程!!!在junit单元测试中,当创建了新线程后,单元测试并不会等待主线程下启动的新线程是否执行结束,只要主线程结束完成,单元测试就会关闭,导致主线程中启动的新线程不能顺利执行完!

  • 对于junit单元测试,当@Test注释的单元测试方法执行时,实际上junit时将该方法作为参数传给了junit.textui.TestRunner类的main函数,并通过main函数进行执行(源代码如下)。
package junit.textui;
public class TestRunner extends BaseTestRunner {
   
   
  	//...
	public static void main(String args[]) {
   
   
        TestRunner aTestRunner = new TestRunner();
        try {
   
   
            TestResult r = aTestRunner.start(args);
            if (!r.wasSuccessful()) {
   
   
                System.exit(FAILURE_EXIT); // FAILURE_EXIT = 1
            }
            System.exit(SUCCESS_EXIT
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值