zoukankan      html  css  js  c++  java
  • Junit测试例中使用多线程,输出结果不正确

    首先看如下测试例,预期结果为:1,2,3,4四个数字都会输出

    @Test
        public void testThread() {
            Thread t = new Thread() {
                @Override
                public void run() {
                    logger.info("1");
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        logger.error("",e);
                    }
                    logger.info("2");
                };
            };
            
            Thread t2 = new Thread() {
                @Override
                public void run() {
                    logger.info("3");
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        logger.error("",e);
                    }
                    logger.info("4");
                };
            };
            
            t.start();
            t2.start();
        }

    但真实的输出结果为,与预期结果不一致:

    11:41:43.395 [Thread-1] INFO com.demo.jkdasync.CompletableFutureDemo - 1
    11:41:43.395 [Thread-2] INFO com.demo.jkdasync.CompletableFutureDemo - 3

    原因为:单元测试执行时,首先创建一个当前测试例类对应的实例对象,然后调用存在Test注解的方法(参考Test注解中的注释说明),这些动作也同样是在main方法中执行的,main方法执行结束,直接推出了jvm,造成剩余的代码没有执行,如果想要执行剩余的代码可以使用join或者其他线程同步控制器来完成,比如CountDownLatch,CyclicBarrier等,但在有些情况下,使用了这些同步器之后,和原有的逻辑则不同了,因此也不是一个好的方法,所以还需要自己在main方法中进行处理;JUnit为单元测试,只是对某一个小功能进行的测试,因此一般多线程这种情况也不太适合使用Junit测试。

    如果要查看junit源码,直接在eclipse中导入junit,则是无法查看源码的,因为源码无法导入,可以通过maven下载下来所需junit包,然后手动导入jar和源码即可,如果使用maven,一般源码也会一起下载,存在如下两个包即可执行Junit测试

     导入源码:

    右键项目-》Build Path-》Configure Build Path-》Libraries-》点开所需要添加源码的jar包-》选择Sorce attachment-》在右侧选择Edit-》找到源码所在位置,导入

  • 相关阅读:
    YARN调度器(Scheduler)详解
    eaysui datagrid编辑时表格变宽变形问题解决
    超简单!两步实现Wordpress评论微信通知~
    基于混合模型的语音降噪效果提升
    无线路由器,86式墙壁路由器,连接时,子路由器不能上网
    vue 动态绑定NavMenu 导航菜单(两级)
    SVN代码迁移至Gitlab(保留日志)
    Spring Boot 获取项目路径或文件
    Spring Boot使用 @Async 注解进行异步调用
    【DVWA】安全测试工具之BurpSuite
  • 原文地址:https://www.cnblogs.com/qq931399960/p/15618787.html
Copyright © 2011-2022 走看看