如何使用 junit 测试 if 语句?

2024-03-15

我似乎无法在网上找到任何解决此问题的教程

我有这个if陈述:

if (basket.getCustomerId() != null) {
                Basket exBasket = findBasketByCustomerId(basket.getCustomerId());
                if (exBasket != null && exBasket.getBasketId() != null) {
                    return exBasket;
                }

我想编写一个单元测试来测试每一行,看看它是否做正确的事情。

有任何想法吗?

@Test
    public void testBasketWithANullCustomerId(){
        basketInformationServiceImpl.createBasket(mockBasket);
        assertNotNull(mockBasket.getCustomerId());
    }

单元测试的目的不是测试声明 but methods。正确的做法是不要考虑这一行,而是考虑它出现的方法,并询问您希望该方法做什么:它需要什么类型的输入,以及它应该产生什么类型的输出?

然后编写需要一些时间的测试typical输入,并检查它们是否给出正确的输出,以及一些边缘情况输入(如null, 0, Integer.MAX_VALUE等)并检查您是否也获得了正确的输出。

如果这是你的整个方法(实际上不可能,但如果这是它的本质),我会测试:

  • a basket with a null客户ID;
  • a null篮子(除非您确定这永远不会发生),因为目前此代码将给出NullPointerException;
  • 一个带有客户 ID 的购物篮,可以让您找到已知的客户exBasket;
  • 一个带有客户 ID 的购物篮,该 ID 将返回exBasket of null;
  • 一个带有客户 ID 的购物篮,该 ID 将返回exBasket不为空,但其购物篮 ID 为null.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 junit 测试 if 语句? 的相关文章

随机推荐

  • 如何制作 text-decoration: 下划线和 2px 填充?

    我喜欢听话的前端开发人员必须创建带有 2 像素填充的下划线 而不是默认的 1 像素 是否存在简单的解决方案 PS 是的 伙计们 我知道 div 具有黑色背景颜色和 1px Npx 和位置 相对 但它太慢了 对于交叉浏览 最好使用text u
  • 替换git中的master分支并防止快进

    我在 github 上有一个库 大约一年前 我完全重写了该应用程序 但不向后兼容 它位于一个名为 结构化 的分支上 现在大多数安装该库的人都在使用该分支 我想将其设为主分支并将当前主分支移至 旧版 我不希望使用旧主机的人能够快进到新主机 因
  • 如何使用 Seed.rb 有选择地填充开发和/或生产数据库?

    我正在使用 seeds rb 来填充我的开发和生产数据库 我通常用虚拟数据填充第一个 然后用我的应用程序运行所需的实际最小数据 例如第一个用户等 填充后者 如何在 Seed rb 中指定每个数据的环境 鉴于我知道 group 是一个 Gem
  • 何时应使用链表的现实世界示例有哪些?

    另一位程序员提到 在他的职业生涯中 他们还没有在任何专业软件中找到使用链表数据结构的用例 我一时想不出什么好的例子 他主要是 C 和 Java 开发人员 谁能举一些例子来说明这是解决特定现实世界问题的正确数据结构 Related 链表的实际
  • 询问 Python 值“是否可散列”

    我感兴趣的是采用任意字典并将其复制到新字典中 并一路改变它 我想做的一项改变是交换键和值 不幸的是 有些价值观本身就是命令 但是 这会生成 不可散列类型 dict 错误 我真的不介意只是将值字符串化并为其提供密钥 但是 我希望能够做这样的事
  • 是否可以在 Chrome 开发者工具元素面板中选择多个元素?

    是否可以在 Chrome 开发者工具元素面板中一次选择多个元素 对于删除多个同级元素或快速重新排序非常有用 我期望Command Click or Shift Click这样做但没有成功 答案是否定的 在 Chrome 开发工具中一次无法选
  • Python kivy - 如何减少TextInput的高度

    我正在使用 kivy 为应用程序制作一个非常简单的 GUI 没什么复杂的 布局非常简单 尽管如此 我在 TextInputs 方面遇到了困难 它们总是以全高显示 我无法设法使它们调整到 合理的 文本高度 如高度 我正在使用 kv 文件样式
  • 使用 QQuickImageProvider 的正确方法是什么?

    我需要动态选择 qpixmaps 以显示在 QML 图像项中 该 qpixmaps 应该从源 qpixmap 中裁剪出来 我将从 QML 文件中设置它 我希望它们能够根据 QML 的第一个需求被 C 代码裁剪并缓存以供将来使用 对于动态图像
  • 使用 Javascript 重新定位

    我试图根据特定条件在页面上重新定位 div if somecondition document getElementById Div1 setAttribute style position absolute left 297px top
  • Android Studio 上的 Flutter 崩溃

    Android studio崩溃并且无法运行项目 flutter升级到2 0后 flutter doctor 没有问题 dart 修复不起作用 建议在这里 Flutter项目升级到2 0 0后编译错误 https stackoverflow
  • 在网格视图上突出显示所选项目

    我试图突出显示 gridview 上的选定项目 使用适配器动态填充 但它不起作用 我做了研究 我什至尝试准确复制其他人的选择器 甚至他们将其放在 gridview 上的方式 但我无法让它工作 它只是没有做任何事情 每个项目的背景都是白色的
  • websocket消息会丢失吗?

    我目前正在开发一个 Java WebSocket 客户端应用程序 我必须确保客户端收到来自服务器的每条消息 由于连接中断 我是否可能丢失一些消息 一旦从服务器发送消息 WebSocket 基于 TCP 所以这种情况不应该发生 对吗 这有可能
  • 长双精度文字的 C++ 后缀是什么?

    在 C 和 C 中 不带后缀的浮点文字默认为double 而后缀f意味着一个float 但是获得 a 的后缀是什么long double 在不知道的情况下 我会定义说 const long double x 3 14159265358979
  • 什么是 CDI 豆?

    我有点困惑 我们将 CDI bean 称为我们注入它们的 bean Inject注释或我们使用的bean Inject他们里面 CDI豆是 CDI 可以实例化 管理和注入的类 自动满足其他对象的依赖关系 几乎任何 Java类可以由CDI管理
  • JSF/Primefaces AJAX 请求真的是异步的吗?

    我是 JSF 新手 所以我不知道我面临的行为是否正常 我有这个代码
  • PHP PDO 的单例替代方案

    这是我用来连接到我的课程MySQL数据库 正如你所看到的 我正在使用Singleton Pattern但几乎每个帖子都说这是一个非常糟糕的模式 创建数据库连接类的最佳方法是什么 有更好的模式吗 class DB extends PDO fu
  • C# 中的冗余?

    采取以下片段 List
  • com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:当 autocommit=true 时无法调用回滚

    我在我的应用程序中使用 Jboss 5 0 和 mysql 并且会有很多并发操作 并且数据库包含相当多的记录 这个错误经常出现 时不时地 com mysql jdbc exceptions MySQLNonTransientConnecti
  • 如何在 NodeJs 中运行 SOAP 请求?

    起初这听起来像是一个重复的问题 但我已经浏览了我找到的所有博客 教程 视频 但没有一个真正说明了如何运行该请求 示例 对于 RESTful 请求 您在 NodeJs 中编码 点击路由 https localhost 3000 api get
  • 如何使用 junit 测试 if 语句?

    我似乎无法在网上找到任何解决此问题的教程 我有这个if陈述 if basket getCustomerId null Basket exBasket findBasketByCustomerId basket getCustomerId i