Java异常有OC,java – NoockockException,而Mockito.verify(Object,VerificationMode.atleast(2))

我使用mockito来模拟单元测试用例并得到以下异常

org.mockito.exceptions.misusing.NotAMockException:

Argument passed to verify() is of type ConsumerImpl and is not a mock!

Make sure you place the parenthesis correctly!

See the examples of correct verifications:

verify(mock).someMethod();

verify(mock, times(10)).someMethod();

verify(mock, atLeastOnce()).someMetenter code herehod();

我的代码是

MessageConsumer mConsumer = Mockito.mock(MessageConsumer.class);

String data = "new Message for Testing";

Message message = new Message(data.getBytes());

Mockito.when(mConsumer.next(10, TimeUnit.SECONDS)).thenReturn(message);

StringParserTest parserTest = new StringParserTest();

ConsumerImpl consumer = new ConsumerImpl(mConsumer, parserTest);

String mes=Mockito.verify(consumer,VerificationModeFactory.times(3)).consumeMessage(10,TimeUnit.SECONDS);

请有人帮我解决这个问题

提前致谢

SRN

解决方法:

嗯,这正是mockito所说的,你没有通过模拟验证!

ConsumerImpl consumer = new ConsumerImpl(mConsumer, parserTest);

String mes=Mockito.verify(consumer,VerificationModeFactory.times(3)).consumeMessage(10,TimeUnit.SECONDS);

另外,如果您验证了模拟,为什么要存储您验证的调用结果,那么因为消费者被嘲笑所以没有意义.验证是验证对作为单元测试对象的协作者的模拟对象的调用.在你的情况下哪个不是很清楚.

你也永远不会使用你的模拟mConsumer实例.

你绝对应该将你的测试分为三个阶段,一个用于夹具,一个用于操作,一个用于验证.使用BDD术语来实现这一点,它增强了测试人员和未来读者对此代码的理解和可读性(And Mockito通过BDDMockito在API中提供它们).

因为我没有真正得到代码试图从你给出的代码中测试的东西,我会想象事情.因此,例如,您将编写此类代码(使用import static):

// given a consumer

MessageConsumer message_consumer = mock(MessageConsumer.class);

String the_message_data = "new Message for Testing";

given(message_consumer.next(10, SECONDS)).willReturn(new Message(the_message_data.getBytes()));

// when calling the client of the customer (which is the unit that is tested)

new MessageProcessor(message_consumer).processAll();

// then verify that consumeMessage is called 3 times

verify(message_consumer, times(3)).consumeMessage(10, SECONDS);

记住Mockito可以帮助你专注于对象之间的交互 ​​- 因为它是面向对象编程最重要的概念 – 特别是在被测试者和他的合作者之间肯定会被嘲笑.

标签:java,mockito,testng,junit-ee

来源: https://codeday.me/bug/20190520/1142422.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部