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
  • 相关阅读:
    .Net和SqlServer的事务处理实例
    SQL Server-- 存储过程中错误处理
    Asp.Net中使用Newtonsoft.Json转换,读取,写入
    从客户端中检测到有潜在危险的 Request.Form 值
    -Json与Xml之间的转换
    c#操作xml的代码(插入节点、修改节点、删除节点等)
    重置SQL Server sa密码
    用exec调用带有output输出参数的存储过程
    日期获取 net
    PhoneListenerService
  • 原文地址:https://www.cnblogs.com/zuiyue_jing/p/12711402.html
Copyright © 2011-2022 走看看