Java 用户绘制的JUnit测试线
我在为这段代码编写测试时遇到了问题,我真的不知道该怎么做 当按下其中一个键且长度为1时,此代码将绘制一条线。 按住shift键时,将创建一条长度为5的线。 我需要测试它是否为每种情况画一条具有正确长度参数的线Java 用户绘制的JUnit测试线,java,user-interface,junit,Java,User Interface,Junit,我在为这段代码编写测试时遇到了问题,我真的不知道该怎么做 当按下其中一个键且长度为1时,此代码将绘制一条线。 按住shift键时,将创建一条长度为5的线。 我需要测试它是否为每种情况画一条具有正确长度参数的线 class SketchPanel extends JPanel { private Point2D last; private final ArrayList<Line2D> lines; private static final int SMALL_INCREM
class SketchPanel extends JPanel {
private Point2D last;
private final ArrayList<Line2D> lines;
private static final int SMALL_INCREMENT = 1;
private static final int LARGE_INCREMENT = 5;
public SketchPanel() {
super();
last = new Point2D.Double(100, 100);
lines = new ArrayList<>();
KeyHandler listener;
listener = new KeyHandler();
addKeyListener(listener);
setFocusable(true);
}
public void add(final int dexX, final int dexY) {
Point2D end;
end = new Point2D.Double(last.getX() + dexX, last.getY() + dexY);
Line2D line;
line = new Line2D.Double(last, end);
lines.add(line);
repaint();
last = end;
}
@Override
public void paintComponent(final Graphics graph) {
super.paintComponent(graph);
Graphics2D graph2 = (Graphics2D) graph;
lines.forEach((s) -> graph2.draw(s));
}
private class KeyHandler implements KeyListener {
@Override
public void keyPressed(final KeyEvent event) {
final int keyCode = event.getKeyCode();
int dex = 0;
if (event.isShiftDown()) {
dex = LARGE_INCREMENT;
} else {
dex = SMALL_INCREMENT;
}
switch (keyCode) {
case KeyEvent.VK_LEFT:
add(-dex, 0);
break;
case KeyEvent.VK_RIGHT:
add(dex, 0);
break;
case KeyEvent.VK_UP:
add(0, -dex);
break;
case KeyEvent.VK_DOWN:
add(0, dex);
break;
default:
break;
}
}
@Override
public void keyReleased(final KeyEvent event) {}
@Override
public void keyTyped(final KeyEvent event) {
char keyChar = event.getKeyChar();
int dex;
if (Character.isUpperCase(keyChar)) {
dex = LARGE_INCREMENT;
keyChar = Character.toLowerCase(keyChar);
} else {
dex = SMALL_INCREMENT;
}
switch (keyChar) {
case 'h':
add(-dex, 0);
break;
case 'l':
add(dex, 0);
break;
case 'k':
add(0, -dex);
break;
case 'j':
add(0, dex);
break;
default:
break;
}
}
}
class SketchPanel扩展了JPanel{
私有点2d-last;
私有最终数组列表行;
私有静态最终整数小增量=1;
私有静态最终int大_增量=5;
公共SketchPanel(){
超级();
最后一个=新点2d.Double(100100);
行=新的ArrayList();
键盘处理程序侦听器;
listener=newkeyhandler();
addKeyListener(监听器);
设置聚焦(真);
}
公共void add(final int dexX,final int dexY){
点2D结束;
end=newpoint2d.Double(last.getX()+dexX,last.getY()+dexY);
线条2D线条;
line=新Line2D.Double(最后一个,结束);
行。添加(行);
重新油漆();
最后=结束;
}
@凌驾
公共组件(最终图形){
super.paintComponent(图);
Graphics2D graph2=(Graphics2D)graph;
线条。forEach((s)->图形2。绘图);
}
私有类KeyHandler实现KeyListener{
@凌驾
按下公共无效键(最终键事件){
final int keyCode=event.getKeyCode();
int-dex=0;
if(event.isShiftDown()){
dex=大增量;
}否则{
dex=小增量;
}
开关(钥匙代码){
case KeyEvent.VK_左:
加(-dex,0);
打破
case KeyEvent.VK_RIGHT:
加法(dex,0);
打破
case KeyEvent.VK_UP:
加(0,-dex);
打破
case KeyEvent.VK_向下:
加(0,dex);
打破
违约:
打破
}
}
@凌驾
public void keyReleased(最终KeyEvent事件){}
@凌驾
public void keyTyped(final KeyEvent事件){
char keyChar=event.getKeyChar();
int-dex;
if(Character.isUpperCase(keyChar)){
dex=大增量;
keyChar=Character.toLowerCase(keyChar);
}否则{
dex=小增量;
}
开关(keyChar){
案例“h”:
加(-dex,0);
打破
案例“l”:
加法(dex,0);
打破
案例“k”:
加(0,-dex);
打破
案例“j”:
加(0,dex);
打破
违约:
打破
}
}
}