2014-01-06 4 views
0

마우스 휠을 움직일 때 Image 오브젝트에서 Cursor 오브젝트를 작성하여 리턴하는 메소드에 대해 JUnit 테스트를 구현하려고합니다. 아이디어는 마우스 휠 이동 다른 커서 매번로드하는 것입니다 :2 개의 커서 객체의 동일성 비교

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)); 
    } 
} 

getCursorForIconCursor 개체를 반환합니다. myListenerClassMouseWheelListener을 구현하는 클래스의 인스턴스입니다. aJPanelJPanel을 확장하는 클래스의 인스턴스입니다.

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이다.

비교 된 Cursor 개체가 동일해야하지만 불행히도이 테스트 (assertEquals)는 항상 실패합니다.

이것이 작동하지 않는 이유는 무엇입니까?

+0

어떤 테스트가 실패합니까? –

답변

2

java.awt.Cursorequals()을 구현하지 않으므로 참조가 동일 할 경우에만 true를 반환하는 Object equals에 위임합니다.

따라서 사용자는 코드에 대해 "동등"하다고 결정한 객체 정보를 사용하여 자신 만의 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 

}