我正在尝试为移动鼠标滚轮时从Cursor
对象创建并返回Image
对象的方法实现JUnit测试。我的想法是每次移动鼠标滚轮时加载一个不同的光标:
public void testMouseWheelMoved() {
MouseWheelEvent e = new MouseWheelEvent(aJPanel, 0, 0, 0, 0, 0, 0, true, 0, 0, 0);
for (String iconName : myListenerClass.getIconNames()) {
myListenerClass.mouseWheelMoved(e);
Cursor currentViewCursor = aJPanel.getCursor();
assertEquals(currentViewCursor, myListenerClass.getCursorForIcon(iconName));
}
}
getCursorForIcon
会返回Cursor
个对象。 myListenerClass
是实现MouseWheelListener
的类的实例。 aJPanel
是扩展JPanel
的类的实例。
public void mouseWheelMoved(MouseWheelEvent e) {
// ...
String iconName = this.iconNames.get(0); // returns icon name at index 0
this.view.setCursor(this.getCursorForIcon(iconName));
}
this.view
来自上方aJPanel
。
不幸的是,这个测试(assertEquals
)总是失败,即使两个比较的Cursor
对象应该是相同的。
知道为什么这不起作用?
答案 0 :(得分:2)
java.awt.Cursor
没有实现equals()
所以它委托给Object equals,如果引用相同,它只会返回true。
因此,您必须使用您认为对您的代码“相等”的任何对象信息来实现您自己的equals方法。
Cursor currentViewCursor = aJPanel.getCursor();
assertCursorsEquals(currentViewCursor, myListenerClass.getCursorForIcon(iconName));
}
private void assertCursorsEquals( Cursor a, Cursor b){
assertEquals(a.getType(), b.getType());
...//other checks you care about
}