【问题标题】:How to check whether a method returns a null?如何检查方法是否返回null?
【发布时间】:2020-04-15 14:13:05
【问题描述】:
Assert.assertThat(refVar.method(), is(null)); 

检查 refVar.method() 是否返回 null 的代码是否正确(null)? 如果不是,我如何检查某物是否为空? 我试过 aNull 但 IDE 说这个方法不存在,我已经试过导入 Matcher.* 了。 请帮忙。

【问题讨论】:

  • 您是想检查refVar.method() 在单元测试方法中直接调用时是否返回null,还是要检查refVar.method() 是否在某个时间点返回null使用 jMock 设置测试范围(例如使用 assertIsSatisfied())?
  • 我想检查 refVar.method() 是否返回 null。你知道怎么做吗?
  • @Progman 也忘了在这里提及你..

标签: java junit jmock


【解决方案1】:

Null or Not Null

匹配器aNull<T>(Class<T>)aNonNull<T>(Class<T>) 分别指定参数是nullnot null

以下代码指定方法“doSomething”必须用两个strings调用,第一个必须是null,第二个必须是not null

oneOf (mock).doSomething(with(aNull(String.class)), aNonNull(String.class)));

查看此jMock Matchers 以获得更多说明

【讨论】:

    【解决方案2】:

    看起来 jMock 不是执行此操作的正确工具。模拟通常用于对某些类/接口进行某种虚拟实现,而不是在单元测试中对某些类/接口进行实际生产实现。使用 jMock,您可以编写如下代码:

    当使用参数42 调用方法foo 时,该对象/接口的模拟应返回字符串"abc"

    但是,jMock 不会检查现有类是否会返回您期望的值。这是“基本”JUnit 测试要做的事情。所以你实例化你想要检查的类并调用你想要验证它确实返回它应该返回的值的方法。所以你写这样的东西:

    Assertions.assertNull(refVar.method());
    

    这将验证refVar.method() 调用的返回值将返回null。这里不需要 jMock。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 2018-09-29
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      相关资源
      最近更新 更多