单元测试应该如何处理预期和意外的异常?

2024-03-22

当预期的异常发生时,它是否应该通过测试? 当出现意外异常时,测试是否会失败? 处理异常是否多余,因为它会使测试失败并因此充当测试?


测试预期的异常

你必须添加expected属性具有预期的异常,因此如果抛出指定的异常,测试将通过。否则就会失败。

例如:

@Test(expected=NullPointerException.class)
public void cannotConvertNulls() {
    service.convert(null);
}

or...

@Test(expected = ArithmeticException.class)  
public void divisionWithException() {  
    int i = 1/0;
}

文档 http://junit.sourceforge.net/javadoc/org/junit/Test.html says:

Test 注释支持两个可选参数。首先, Expected,声明测试方法应该抛出异常。如果它 不抛出异常或者抛出与以下不同的异常 声明称,测试失败。

测试超时

只是想让您知道,您还可以测试超时。

第二个可选参数超时会导致测试失败,如果 花费的时间比指定的时钟时间长(以 毫秒)。以下测试失败:

@Test(timeout=100) 
public void infinity() {
   while(true);
}

希望能有所帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单元测试应该如何处理预期和意外的异常? 的相关文章

  • 从 OMElement 对象获取 InputStream/io.Reader

    我有一个OMElement对象 从中我想得到一个InputStream或读者对象 我想要的是流式传输xml来自OMElement我有 没有加载到内存中 我只能得到XMLStreamReader对此表示反对 但我找不到办法得到InputStr
  • JPanel透明背景和显示元素[重复]

    这个问题在这里已经有答案了 我插入一个背景图e 变成 aJPanel但一些界面元素消失了 以下 Java Swing 元素不会出现 标签标题 标签 usuario 标签 密码 按钮加速器 你能否使图像透明或元素不透明 setOpaque f
  • 使用多个构造函数创建不可变类

    我正在阅读这一页 https docs oracle com javase tutorial essential concurrency imstrat html关于在 Java 中创建不可变类 并决定根据页面上概述的规范修改我正在编写的类
  • JUnit 使用 Mockito 测试异步方法

    我已经使用 Spring Framework 版本 5 0 5 RELEASE 在 Java 1 8 类中实现了异步方法 public class ClassToBeTested Autowired private MyComponent
  • 方法不必要地被调用?

    我有一个 BaseActivity 它可以通过其他所有活动进行扩展 问题是 每当用户离开 暂停 活动时 我都会将音乐静音 我也不再接听电话 问题是 onPause每当用户在活动之间切换时就会被调用 这意味着应用程序不必要地静音和停止tele
  • 在气球内显示带有照片的多个地标的最佳做法是什么?

    我有一个项目如下 从手机上拍摄几张照片 将照片保存在网络系统中 然后将照片显示在其中的谷歌地球上 我读过很多文章 但它们都使用 fetchKml 我读过的一篇好文章是使用 php 但使用 fetchKml 我不知道是否可以使用 parseK
  • 如何在 OpenAPI 3.0 中定义字节数组

    我正在将 API 从 Swagger 2 0 迁移到 OpenAPI 3 0 在 DTO 中 我有一个指定为字节数组的字段 Swagger 对 DTO 的定义 Job type object properties body type str
  • 我们可以在三元运算符(Java)中使用命令吗?

    这是一个工作代码 String a first String b second String object System out println object null a b 但它不是 String a first String b se
  • 如何消除警告:使用“$”而不是“.”对于 Eclipse 中的内部类

    我是 Android 开发新手 当我将 eclipse 和 Android SDK 更新到最新版本后 我收到警告 Use instead of for inner classes or use only lowercase letters
  • JSP 标签+ scriptlet。如何启用脚本?

    我有一个使用标签模板的页面 我的 web xml 非常基本 我只是想在页面中运行一些代码 不 我对标签或其他替代品不感兴趣 我想使用不好的做法 scriptlet 哈哈 到目前为止 我收到了 HTTP ERROR 500 错误 Script
  • 使用 Jasmine 模拟 jQuery ajax 调用

    我正在使用 Jasmine 2 5 2 为使用 jQuery 3 1 1 执行 Ajax 请求的代码编写单元测试 我想模拟 Ajax 调用 提供我自己的响应状态和文本 我正在使用 Jasmine ajax 插件 https github c
  • java JFileChooser 文件大小过滤器

    我知道我可以按文件类型进行过滤 但是可以按文件大小进行过滤吗 例如 JFileChooser 仅显示 3 MB 以内的图片 简短的回答应该是 你尝试过什么 长答案是肯定的 JFileChooser fc new JFileChooser f
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • RMI 服务器:rmiregistry 或 LocateRegistry.createRegistry

    对于服务器端的RMI 我们需要启动吗rmiregistry程序 或者只是调用LocateRegistry createRegistry 如果两者都可以的话 各有什么优点和缺点 他们是同一件事 rmiregistry是一个单独的程序 您可以从
  • 使用 Maven 3 时 Cobertura 代码覆盖率为 0%

    读完这篇文章后 将 Cobertura 与 Maven 3 0 2 一起使用的正确方法是什么 https stackoverflow com questions 6931360 what is the proper way to use c
  • JDK 7 的快速调试/调试构建

    我正在寻找 JDK 的调试 或者我猜他们称之为快速调试构建 以启用在运行时生成的打印程序集以及查找性能问题时所需的其他诊断 就目前情况而言 我似乎找不到可以直接使用的 现成的 快速调试构建二进制包 有人可以帮我提供下载链接 或者至少提供有关
  • Java的hashCode可以为不同的字符串产生相同的值吗?

    使用java的哈希码函数是否可以为不同的字符串提供相同的哈希码 或者如果可能的话 其可能性的 是多少 Java 哈希码是 32 位 它散列的可能字符串的数量是无限的 所以是的 会发生冲突 百分比是没有意义的 项目 字符串 的数量是无限的 而
  • 使用 Android 的 Mobile Vision API 扫描二维码

    我跟着这个tutorial http code tutsplus com tutorials reading qr codes using the mobile vision api cms 24680关于如何构建可以扫描二维码的 Andr
  • Java 9 中紧凑字符串和压缩字符串的区别

    有什么优点紧凑的字符串 http openjdk java net jeps 254JDK9 中的压缩字符串 压缩字符串 Java 6 和紧凑字符串 Java 9 都有相同的动机 字符串通常实际上是 Latin 1 因此浪费了一半的空间 和

随机推荐

  • 用于转录音频文件中的语音的开源软件[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 谁能推荐可靠的开源软件来在 wav 文件中转录英语语音 我研究过的两个主要程序是Sphinx http
  • 单独文件中的函数实现

    在单独的文件中实现函数的正确语法是什么 例如 foo h int Multiply const int Number foo cpp include foo h int Multiply const int Number return Nu
  • Mysql自动为字段添加前缀

    示例表1 id field1 field2 table2 id id1 field1 field2 是否有可能做到这一点 select t1 t2 from table1 t1 inner join table2 t2 on t1 id t
  • 在端口 3000 上对 Node.js 应用程序进行 AWS 负载平衡

    我有一个 Node js Express Web 应用程序 它使用默认端口 3000 并通过弹性 IP 在 Ubuntu EC2 实例上响应良好 我正在尝试设置 AWS 内置的负载平衡 但似乎无法通过良好的运行状况检查 设置 2 个 ubu
  • 本地主机上的 socket.io 出现 404 错误 - XAMPP - Laravel 5.5

    我在本地主机上使用 XAMPP Window 8 1 Laravel 5 5 我使用 Pusher 在 Laravel 中编写了广播代码 并且工作正常 由于 Pusher 非常昂贵 所以我打算转向 socket io 在主刀片中添加了以下链
  • 如何使用批处理文件迭代 .ini 文件中的项目?

    我目前正在尝试循环遍历 a 中的每个项目 ini文件并稍后使用这些值 但我不知道怎么做 我的config ini文件看起来像这样 items item 1 XXXXX item 2 XXXXX item 3 XXXXX item 4 XXX
  • JHipster 微服务 CORS

    有没有一种方法可以通过网关访问微服务API而无需身份验证 例如 如果我有一个公共登录页面需要从微服务 API 读取数据 我启用了 CORS 并通过 Swagger 测试了 API 它在网关应用程序中运行良好 但是 如果我使用 CURL 调用
  • 在 C# 中(可能在不安全模式下)读取锁定文件的侵入性最小的方法是什么?

    我需要读取可能被锁定的 Windows 文件 但我不想创建任何类型的锁来阻止其他进程写入该文件 另外 即使文件被锁定为独占使用 我也想看看里面有什么 尽管这不是我的确切用例 但请考虑如何在使用和安装时读取 SQL Exchange 日志或数
  • 使用hibernate返回查询的计数值

    这是我的 mysql 查询 SELECT count FROM bw jobs WHERE year job date year curdate AND month job date month curdate 如何在休眠中使用它来获取计数
  • 构建带有复选标记的 NSOutline 视图

    我希望使用正确的 Apple 推荐方法向 NSOutlineview 添加复选框 但文档中尚不清楚 如何添加行为以允许用户如果单击父复选框 则它将选择子项 如果我单击它 它将取消选择该项目的子项 编辑 我简化了我的问题并添加了图像以使其更清
  • 如何从 DragEventArgs 确定数据类型

    我已经在我的应用程序中实现了拖放 但在确定被拖动对象的类型时遇到一些困难 我有一个基类Indicator以及从它派生的几个类 拖动的对象可以是这些类型中的任何一种 下面的代码片段看起来不太优雅 并且容易出现维护问题 每次我们添加一个新的派生
  • 为什么首先调用 ShowWindow()?

    首先需要注意的是 我最近才开始学习 WinAPI 我确信这个问题以前已经被问过很多次了 但由于某种原因我在网上找不到它 问题很简单 为什么要费心最初的电话ShowWindow 在体内WinMain 在消息循环执行之前 为什么不简单地通过使用
  • 如何找出 C++ 警告的数量

    我已开启 Wall在我的代码中消除所有警告 然而 有些我想在代码中允许 所以我在代码中禁用这些 在常见的问题中 我可以轻松地在 Google 中找到警告编号并禁用它们 例如 pragma warning disable 4127 但有些 我
  • PyCharm 和外部工具过滤器

    我正在尝试使用 PyCharm 进行 Django 开发 到目前为止我非常高兴 我的团队严格遵循 PEP8 格式 并使用 pep8 命令行程序进行检查以确保我们的代码符合要求 我已经配置了一个外部工具命令来运行 pep8 并且运行良好 我看
  • gsutil:仅列出目录(错误?)

    gsutil ls d gs XXX test gs XXX test gs XXX test 336x280 swf gz 所以它不仅列出目录 以 以及常规文件 以 gz例如 但据我了解 这个命令应该只列出目录 错误在哪里 gsutil
  • 使用 Twitter Bootstrap 导航栏进行导航的正确方法是什么?

    我正在使用 Twitter Bootstrap 3 创建一个网页 我使用导航栏的直觉是让每个项目导航到新的 href 然而 我见过以不同的方式处理这个问题 有些页面确实导航到新的 href 并触发页面加载 可能使用某种模板在所有 html
  • Html Agility - 将解析保存到字符串

    刚刚第一次尝试使用 Html Agility Pack 并遇到了问题 首先 我从字符串变量加载 string NewsText dr Message ToString HtmlAgilityPack HtmlDocument htmlDoc
  • 如何创建堆积线图

    在 R 中创建堆积条形图有多种解决方案 但如何绘制堆积线图呢 可以使用以下命令创建堆积线图ggplot2包裹 一些示例数据 set seed 11 df lt data frame a rlnorm 30 b 1 10 c rep LETT
  • 当报告需要很长时间运行时,如何解决套接字关闭的问题?

    我正在运行用 iReport 制作的 Clarity 报告 我的一份报告非常复杂 有时需要很长时间才能运行 取决于参数 有时 花了太长时间 我收到一条消息说 插座关闭 当报表快速运行时 不会出现此消息 我认为这意味着运行已超时 我目前正在努
  • 单元测试应该如何处理预期和意外的异常?

    当预期的异常发生时 它是否应该通过测试 当出现意外异常时 测试是否会失败 处理异常是否多余 因为它会使测试失败并因此充当测试 测试预期的异常 你必须添加expected属性具有预期的异常 因此如果抛出指定的异常 测试将通过 否则就会失败 例