expected:java.lang.Long< 1>但是:java.lang.Integer< 1>

时间:2015-06-23 19:32:10

标签: java junit

我正在使用JUnit测试一些代码。

以下部分:

    assertEquals(query.get(0).get("FEEDBACK_ID"), feedbackValues.getFeedbackId());

导致以下错误:

java.lang.AssertionError: expected: java.lang.Long<1> but was: java.lang.Integer<1>

哪个好......

我的问题是,如何转换此对象:

query.get(0).get("FEEDBACK_ID")

进入整数以避免测试失败?我知道将右边的项目转换成很长的内容会更容易,但我不想这样做。

1 个答案:

答案 0 :(得分:1)

你想要达到的目标是错误的,所以唯一有效的答案是:不要这样做。基本上,您尝试向方法添加行为以匹配您的测试。在这种情况下你在测试什么?当然不是方法。即使它发生的可能性很小,但向下转换为int可能会导致整数溢出并导致测试失败。

测试不应该向测试方法的输出添加额外的转换,否则谁测试这些额外的转换?为什么API不会返回您想要操作的类型?

您的方法应该返回相同的类型,或者您应该将int结果提升为long,因为它是安全的。