如何使用循环和异步方法模拟类

时间:2016-02-25 14:09:18

标签: java asynchronous mockito

当我有异步方法,线程和循环时,如何使用mockito模拟类USBConnection? 这个原型背后的基本思想是USBConnection应该每秒在Arduino.class中以可变速度发送数据,Arduino每秒打印出值。

USBConnection类是我想要模拟的。任何有关实现此目的的提示和指南都表示赞赏。

public abstract class Arduino {

private static int speed;

public static void setSpeed(int a) {
    speed = a;
}

public static int getSpeed(){
    return speed;
}

public static void printSpeed(){
    System.out.println(speed);  
    }

public static void main(String[] args) throws InterruptedException {

    USBConnection usb = new USBConnection();
    Thread usbThread = new Thread(usb);
    usbThread.start();

    while(true){
        printSpeed();
        Thread.sleep(1000);
    }
}}

界面

interface USB {
 public void sendSpeed(int a);    }

我们需要模拟的类:

class USBConnection implements Runnable, USB {

public void sendSpeed(int a){
    Arduino.setSpeed(a);
}

@Override
public void run() {
    int i = 0;
    while(true){            
        sendSpeed(i);
        i++;            
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}}

1 个答案:

答案 0 :(得分:0)

基于一些反复试验和Christoper的评论,我决定不以上述方式使用mockito。

我们重新设计了软件架构,并且不会使用循环或线程来模拟类。