JUnit ClassCastException

时间:2014-09-10 07:09:34

标签: java junit

我正在测试这行代码而我正在使用ClassCastException

final A a = (A) dao.fetchId(id);

A扩展了dao.fetchId的回报。

以下是测试代码:

 @Test

 public void test() throws Exception {
    final A a = new A();
    final C c = new C();
    c.setId(2L);
    Mockito.when(dao.fetchId(Matchers.anyLong())).thenReturn(a);
    target.someMethod(c, 2L, 2L, true, true);
}

1 个答案:

答案 0 :(得分:0)

你的关系似乎倒退了。您说A延伸C,但您尝试将C投放到A

人们可以将继承视为“是一种”关系。当你说一个类扩展另一个类时,你实际上是在说一个类“是”你继承的类。

例如,String Object,但Object不一定是String

以下是代码中的内容。您可以从右到左阅读is-a关系。

Object string = "I'm a string!";
String object = (String) new Object(); // required to satisfy compilation

很难划分上下文,因为我们不知道你为什么要开始使用这个继承链。但是,对于这种情况,你应该返回你真正需要的课程。