我有一个接口,该方法需要一个数组Foo
:
public interface IBar {
void doStuff(Foo[] arr);
}
我正在使用Mockito嘲笑此接口,我想断言该接口已doStuff()
被调用,但是我不想验证传递了什么参数-“无关”。
如何使用any()
通用方法代替编写以下代码anyObject()
?
IBar bar = mock(IBar.class);
...
verify(bar).doStuff((Foo[]) anyObject());
从Java 8开始,您可以使用无参数any
方法,并且类型参数将由编译器推断:
verify(bar).doStuff(any());
Java 8中的新事物是表达式的
目标类型
将用于推断其子表达式的类型参数。在Java 8之前,仅在大多数情况下用于类型参数推断的方法的参数。
在这种情况下,的参数类型doStuff
将是的目标类型any()
,并且any()
将选择的返回值类型以匹配该参数类型。
此机制主要是在Java 8中添加的,目的是能够编译lambda表达式,但通常会改进类型推断。
不幸的是,这不适用于原始类型:
public interface IBar {
void doPrimitiveStuff(int i);
}
verify(bar).doPrimitiveStuff(any()); // Compiles but throws NullPointerException
verify(bar).doPrimitiveStuff(anyInt()); // This is what you have to do instead
问题在于,编译器将推断Integer
为的返回值any()
。Mockito不会意识到这一点(由于类型擦除),并返回引用类型的默认值null
。在将返回值intValue
传递给之前,运行时将尝试通过调用返回值的方法来取消对返回值的装箱doStuff
,并引发异常。
本文向大家介绍Python any()函数的使用方法,包括了Python any()函数的使用方法的使用技巧和注意事项,需要的朋友参考一下 描述: 如果iterable的任何元素为true,则返回true。如果iterable为空,则返回false。相当于: 意思是:判断一个tuple或者list是否全部为空、0、False。如果全为空、0、False,则返回False;如果(只要有非[空或0或F
问题内容: 我正在使用Mockito 1.9.5。我有以下代码: 我收到一句编译错误: 但是,当我使用模拟方法时,不会出现错误。谁能告诉我怎么回事?使用该方法时为什么会出现错误?当第三方提供且无法修改时,还有其他方法可以解决此问题吗? 问题答案: 编辑 :从Mockito 1.10.x开始,嵌入在类中的泛型类型现在由Mockito用于深层存根。即。 Mockito尽最大努力获取编译器嵌入的类型信息
使用mockito模拟一个方法会确保永远不会调用被模拟的方法吗?我有一个主类,它包含一些我想为其编写单元测试的代码,还有一个单元测试类MainTest,它包含主类的单元测试。 eg: 源类: JUnit测试(使用mockito) 这项测试失败了。为什么?
我有以下代码 我对嘲笑不熟悉。我有以下疑问。我正在尝试测试公共方法。 我是否可以断言私有变量workDone的值? 是否可以验证超类中的方法调用? 如何在方法中模拟私有方法调用?
因此,我使用Spring-Boot2.1.6并集成kafka consumer来使用在该主题上发布的任何类型的消息。作为参考,我在https://docs.spring.io/spring-boot/docs/2.1.6.release/reference/htmlsingle/ 所以我在POM中有依赖性: 我正在application.yml中进行配置
我想通过模拟class的重写方法a1方法2来测试我的服务。我不想更改课程A1和B1中的任何内容。我使用的是mockito 1.9.0和powermockito 1.4.12。我正在尝试以下代码: UnitTestService类: 服务级别: A1类: B1级: 我正在eclipse中使用testNG运行类UnitTestService。在这里,B1类a1Method2中的实际方法在控制台中打印“