当我有异步方法、线程和循环时,我将如何使用 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();
}
}
}}
基于一些试验和错误以及Christoper的评论,我决定不以上面提到的这种方式使用mockito。
我们重新设计了软件架构,不会用循环或线程来模拟类。