java – 异常:mockito想要但不被调用,实际上与这个模拟的零交互

前端之家收集整理的这篇文章主要介绍了java – 异常:mockito想要但不被调用,实际上与这个模拟的零交互前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有界面
  1. Interface MyInterface {
  2. myMethodToBeVerified (String,String);
  3. }

而实现界面就是

  1. class MyClassToBeTested implements MyInterface {
  2. myMethodToBeVerified(String,String) {
  3. …….
  4. }
  5. }

我有另一个班

  1. class MyClass {
  2. MyInterface myObj = new MyClassToBeTested();
  3. public void abc(){
  4. myObj.myMethodToBeVerified (new String(“a”),new String(“b”));
  5. }

}

我正在为MyClass编写JUnit.我已经做好了

  1. class MyClassTest {
  2. MyClass myClass = new MyClass();
  3.  
  4. @Mock
  5. MyInterface myInterface;
  6.  
  7. testAbc(){
  8. myClass.abc();
  9. verify(myInterface).myMethodToBeVerified(new String(“a”),new String(“b”));
  10. }
  11. }

但是我得到了mockito想要的但是没有被调用,实际上在验证调用时与这个模拟的零交互是零的.

有人可以提出一些解决方

解决方法

你需要在你测试的类中注入模拟.目前你正在与真实的对象进行交互,而不是与模拟的对象交互.您可以通过以下方式修复代码
  1. void testAbc(){
  2. myClass.myObj = myInteface;
  3. myClass.abc();
  4. verify(myInterface).myMethodToBeVerified(new String(“a”),new String(“b”));
  5. }

尽管将所有初始化代码提取到@Before中将是一个更明智的选择

  1. @Before
  2. void setUp(){
  3. myClass = new myClass();
  4. myClass.myObj = myInteface;
  5. }
  6.  
  7. @Test
  8. void testAbc(){
  9. myClass.abc();
  10. verify(myInterface).myMethodToBeVerified(new String(“a”),new String(“b”));
  11. }

猜你在找的Java相关文章