首页 > 编程语言 > 详细

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

时间:2020-04-16 12:04:01      阅读:147      评论:0      收藏:0      [点我收藏+]

背景

  • 项目目录结构如下
    • 技术分享图片

 

 

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

 

 

原因

  • 两个测试类使用的环境不同,一个使用的是dev环境测试,一个使用的是test环境测试,代码如下
    • ElecInvalidOrderTest测试类
      • import java.sql.SQLException;
        
        import static org.assertj.core.api.Assertions.assertThat;
        
        /**
         * @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测试类
      • package com.canaan.superviser.objects.rpc.grpc.grpcserver;
        
        import canaan.superviser.objects.common.EnumRpcCode;
        import canaan.superviser.objects.superviserService.OrderSuperviserResponse;
        import com.canaan.superviser.objects.rpc.grpc.grpcclient.OrderSuperviserClient;
        import com.canaan.superviser.objects.rpc.repositories.mysql.PaymentsTableRepository;
        import com.canaan.superviser.objects.rpc.utils.ConnUtil;
        import org.junit.After;
        import org.junit.Before;
        import org.junit.Test;
        import org.junit.runner.RunWith;
        import org.slf4j.Logger;
        import org.slf4j.LoggerFactory;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.boot.test.context.SpringBootTest;
        import org.springframework.test.context.ActiveProfiles;
        import org.springframework.test.context.junit4.SpringRunner;
        import org.springframework.transaction.annotation.Isolation;
        import org.springframework.transaction.annotation.Transactional;
        
        import javax.sql.DataSource;
        import java.io.IOException;
        import java.sql.Connection;
        import java.sql.SQLException;
        
        import static org.assertj.core.api.Assertions.assertThat;
        
        /**
         * @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

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

原文:https://www.cnblogs.com/zuiyue_jing/p/12711402.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!