zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    QuartzNet使用
    Flex Metadata tags 元数据标签
    fb设置viewSourceURL
    免费开放的API
    测试跨域加载
    nape.geom.MarchingSquares
    bootstrap 全局样式
    <meta> 标记汇总
    bootstrap模版兼容IE浏览器代码嵌入
    正则表达式语法
  • 原文地址:https://www.cnblogs.com/zuiyue_jing/p/12711402.html
Copyright © 2011-2022 走看看