• 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
  • 相关阅读:
    Codeforces 468 B Two Sets
    POJ 3080 Blue Jeans
    Scan法求凸包
    线段树 区间更新 区间求和 板子
    拼图设计 课程作业三
    通讯录c#实现 课程作业二
    贷款计算器C#实现 课程作业一
    标准计算器C#实现 课程作业一
    ccf 行车路线
    hdu 4902 Nice boat
  • 原文地址:https://www.cnblogs.com/zuiyue_jing/p/12711402.html
Copyright © 2020-2023  润新知