【问题标题】:Mocking java objects gives class cast exceptions模拟java对象给出类转换异常
【发布时间】:2015-09-25 18:02:08
【问题描述】:

我有一个接口fly 和一个实现fly 的类duck

interface Fly {
  getWingSize();   
}

public class Duck implements Fly {
  @Override
  int getWingSize(){
    return 1;
  }
}

在我的控制器类中,当我尝试使用以下内容时:

Fly flyAnimal = Animal.getFlyingAnimal();
((Duck) flyAnimal).getWingSize();

它工作正常,但是在我的 junit 中,它给出了一个类转换异常。我正在使用 powermockito。

【问题讨论】:

  • 请发布一个完整的示例和完整的堆栈跟踪。
  • 你应该为你的类使用大写的名字,例如interface Fly.
  • 是的,我使用的是大写名称。我不能在 stackoverflow 上使用代码,因此我必须编写一个与我正在处理的代码有些相似的代码

标签: java spring junit mockito powermockito


【解决方案1】:

在您的代码中,您将转换为具体类(鸭子)。通常,您会模拟接口。您的测试用例可能已经模拟了接口 fly。

如果您将((duck) fly).getWingSize(); 替换为fly.getWingSize();,它应该可以正常工作

【讨论】:

  • 我的 junit 有问题,我正在使用 mockito
  • 请发布您的测试用例。
  • 鸭鸭动物 = PowerMockito.mock(duck.class); PowerMockito.when(duckAnimal.getWingSize()).thenReturn(1);
  • @mistack305 而不是通过编辑您的问题来制作随机粘贴的内容,这是一个真正可复制的问题。在您发布的内容中,这里没有进行任何选角。你不能得到你所说的异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 2017-03-24
  • 2015-12-14
  • 2011-06-28
  • 2018-07-22
  • 2019-06-01
  • 1970-01-01
相关资源
最近更新 更多