最近在做自动化测试项目。项目用到了TestNG、SpringBoot等框架。

在无意中发现,在@Test(description = "case1", timeOut = 180000)注解后,TestNG的Assert断言异常无法抛出。

先来看一下代码:

package com.woodpecker.testcase.demo;
import com.woodpecker.WoodpeckerApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.Assert;
import org.testng.annotations.Test;/** * 类描述:〈〉 * * @author: jinjianxu * @since: 1.0 */
@SpringBootTest(classes = {WoodpeckerApplication.class})
public class D extends AbstractTestNGSpringContextTests {
@Test(description = "case1", timeOut = 180000)
public void test() {
System.out.println("begin");
Assert.assertEquals("1", "2", "断言1和2相等");
System.out.println("end");
}
}

我在用例上加了timeOut = 180000,用于控制用例执行最大时间,防止case长时间卡住。咋们来运行一下这个代码,截图如下:

什么情况?断言失败的异常呢?

不懂了。

接下去我把用例的timeOut = 180000去掉,代码如下:

package com.woodpecker.testcase.demo;
import com.woodpecker.WoodpeckerApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.Assert;
import org.testng.annotations.Test;/** * 类描述:〈〉 * * @author: jinjianxu * @since: 1.0 */
@SpringBootTest(classes = {WoodpeckerApplication.class})
public class D extends AbstractTestNGSpringContextTests {
// @Test(description = "case1", timeOut = 180000)
@Test(description = "case1")
public void test() {
System.out.println("begin");
Assert.assertEquals("1", "2", "断言1和2相等");
System.out.println("end");
}
}
我把timeOut注释掉了。

运行一下,结果如下:

咦,断言失败异常抛出来了。

什么鬼!

莫非是SpringBoot或者TestNG的 BUG?

求各位大神指导一下,万分感谢!

进一步发现,不管是任何异常,都不会被抛出。

代码如下:

运行代码,结果如下:

你看,我手动抛出

throw new RuntimeException("断言1和2相等");

都没异常抛出来,被捕获掉了。

一切的问题,都在于 @Test(description = "case1", timeOut = 180000) 这个代码,设置了 timeOut 就会出现这个问题,去掉 timeOut 就没问题。可以正常抛出异常。

但是我用例,需要设置超时时间。

手动抛出异常_TestNG和SpringBoot2.1.6整合后,导致TestNG的断言异常无法抛出,是为什么?...相关推荐

  1. java 在方法中抛出异常_Java异常的抛出

    在Java中,当定义的方法可能产生异常时,程序员必须抛出可能的异常. 抛出异常的两种方式,一是在方法内部用throw语句,二是在方法定义时用throws关键字 1.throw语句 在Java中,thr ...

  2. java声明异常必须抛出吗_简述java中抛出异常的两种方式

    java编程中经常遇到异常,这时就需要利用java中的异常抛出机制,在java中提供了两种抛出异常的方法:try{}  catch() {}和throw. 一.抛出异常的两种方式 (1) 首先我们来看 ...

  3. java 异常何时抛出_何时适合抛出异常?

    例外点是沟通 exceptional 情况 . 从这个意义上讲:如果你的例子中所有条件都是假的绝对意外,并且没有有效的返回值来表明这种情况,那么抛出RuntimeException是合理的做法;但我可 ...

  4. java 手动抛异常_Java 异常处理 之 手动抛出异常

    一.手动抛出异常 throw 在编写程序时,我们必须要考虑程序出现问题的情况.比如,在定义方法时,方法需要接受参数.那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法 ...

  5. 应该手动抛出什么异常?RuntimeException?

    Java程序员应该手动抛出什么异常?不能抛出RuntimeException吧? 收藏帖子 回复 秦三行 结帖率 96.88% if(sectionCodeT!=null && !&q ...

  6. 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )

    文章目录 I 异常处理 II 字符串异常 III 异常对象 IV 抛出任意类型对象 V 自定义异常 VI 异常相关代码 I 异常处理 1. 异常处理 : 使用 " try{}catch(){ ...

  7. python中用来抛出异常的关键字是( )_python异常抛出

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 主动抛出异常raise typeerror(类型错误) # 7. 触发异常try ...

  8. 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )

    转载自:https://blog.csdn.net/shulianghan/article/details/100002073 文章目录 I 异常处理 II 字符串异常 III 异常对象 IV 抛出任 ...

  9. python用raise手动抛出异常

    python用raise手动抛出异常 文章目录: raise: 就是手动抛出异常 格式: 格式:raise [exceptionType[,argument][,traceback]] 举例子1: d ...

  10. 手动抛出异常_Java异常处理最佳实践及陷阱防范

    前言 不管在我们的工作还是生活中,总会出现各种"错误",各种突发的"异常".无论我们做了多少准备,多少测试,这些异常总会在某个时间点出现,如果处理不当或是不及时 ...

最新文章

  1. ArcMap导出属性表为Excel文件
  2. Django redis的使用
  3. mysql通过集合查询_MySQL使用集合函数进行查询操作实例详解
  4. 扫地机器人单扫和双扫_小米扫拖机器人体验:再见了,拖把君
  5. java for index_Java IBarDataSet.getEntryForIndex方法代码示例
  6. DeFi智能投顾Rari Capital协议已产生超165000美元费用
  7. 能运行lsdyna的服务器,ansys ls-dyna运行出错 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  8. 51单片机汇编语言实验及代码
  9. incaseformat病毒专杀:怎么查杀incaseformat病毒?紧急扩散!
  10. 运放的转换速率(压摆率)SR的意义和如何选取
  11. CyanogenMod 7
  12. Java学习笔记001_概述及环境搭载
  13. 关于读书的名人名言,让你体会读书的好处有哪些
  14. 代码报错 Uncaught TypeError: Converting circular structure to JSON
  15. Celery 全面学习笔记
  16. 天平应什么放置_天平的使用规程
  17. 高性能零售IT系统的建设06-当应对大量HTTP请求时兼顾性能、处理速度的架构设计
  18. 【新闻推荐系统】(task2)mysql和pymysql使用
  19. GD25Q127C编程器写不进去的原因
  20. 异步爬虫“该文章已下线” 、“mrd参数”解决方法

热门文章

  1. 【题解】Luogu p3478 [POI2008]STA-Station 动态规划
  2. Linux Unix shell 编程指南学习笔记(第二部分)
  3. scrollView滚动原理
  4. hdu 1712 ACboy needs your help (DP)
  5. 《深入浅出struts》读书笔记(3)
  6. Zookeeper开源客户端curator 分布式锁
  7. Java 虚拟机简介
  8. 【设计模式】03-抽象工厂模式
  9. centos6 安装glibc-2.14.1
  10. 揭开CSS的绝对定位真实的面纱(二)