Spring错误——Junit测试——java.net.BindException: Address already in use: bind

背景

  • 项目目录结构如下

 

 

    • 其中application-dev.yml为开发环境,application-prod.yml为生产环境,application-test.yml为测试环境
    • 每个环境使用的数据库不同,测试时使用test环境进行单元测试。
  • 开发项目使用Junit批量进行单元测试时,报错:java.net.BindException: Address already in use: bind,如下

 

 

原因

  • 两个测试类使用的环境不同,一个使用的是dev环境测试,一个使用的是test环境测试,代码如下
    • ElecInvalidOrderTest测试类
      • 复制代码
        /**
         * @author jingguoliang
         * @Description: 失效电费订单
         * @date 2020/4/14
         */
        @RunWith(SpringRunner.class)
        @SpringBootTest
        @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_UNCOMMITTED)
        @ActiveProfiles(value = "dev")
        public class ElecInvalidOrderTest {
        
            private static final Logger logger = LoggerFactory.getLogger( ElecInvalidOrderTest.class );
        
            @Before
            public void setUp() throws Exception {
                initializeDbData();//初始化数据
            }
            public void initializeDbData() throws SQLException, IOException {
            }
            @After
            public void tearDown() throws Exception {
            }
        
            //失效电费订单1
            @Test
            public void orderSuperviser1() {
                //调用业务服务
                logger.info("BizType.elecorder_invalid is start");
            }
        复制代码
    • ElecWillInvalidOrderTest测试类
      • 复制代码
        /**
         * @author jingguoliang
         * @Description: 即将即将失效电费订单
         * @date 2020/4/14
         */
        @RunWith(SpringRunner.class)
        @SpringBootTest
        @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_UNCOMMITTED)
        @ActiveProfiles(value = "test")
        public class ElecWillInvalidOrderTest {
        
            private static final Logger logger = LoggerFactory.getLogger( ElecWillInvalidOrderTest.class );
        
            @Before
            public void setUp() throws Exception {
                initializeDbData();//初始化数据
            }
            public void initializeDbData() throws SQLException, IOException {
            }
        
            @After
            public void tearDown() throws Exception {
            }
        
            //即将即将失效电费订单1
            @Test
            public void orderSuperviser1() {
                //调用业务服务
                logger.info("BizType.elecorder_will_invalid is start");
            }
        复制代码
  • 每一个环境在测试开始时都会使用启用一个Adress,所以会出现地址已经占用的问题

解决办法

  • 如果批量测试,只能把测试环境进行统一,都改成dev或者test
posted @   话·醉月  阅读(1395)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示