gpt4 book ai didi

java - 如何使用 Junit 测试实现 Runnable 的类

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:36 24 4
gpt4 key购买 nike

我有一个像这样实现 Runnable 的类

  public Processor implements Runnable{

public void run() {
while (true) {
//some code
sendRequest(object);
}
}
}

public void sendRequest(Object, object){
// do something to send the event
}
}

和其他预加载类一样。我用

Processor processor = new Processor();
ExecutorService executor = Executors.newCachedThreadPool();
executor.execute(processor)

所以我的问题是如何对调用或不调用 sendRequest 方法进行单元测试?

最佳答案

分离关注点:Runnable 和关联的逻辑。
它还将使您的代码模式可测试。
您可以在 Processor 类所依赖的 Foo 类中提取 sendRequest()。然后您只需在测试中模拟这个 Foo 类并验证是否调用了 sendRequest() 方法。

例如:

 public Processor implements Runnable{

private Foo foo;

public Processor(Foo foo){
this.foo = foo;
}

public void run() {
while (true) {
//some code
foo.sendRequest(object);
}
}
}

和测试:

@Mock
Foo fooMock;

@Test
public void run() {
Processor processor = new Processor(fooMock);
ExecutorService executor = Executors.newCachedThreadPool();
executor.execute(processor);
executor.awaitTermination(someTime, TimeUnit.SECONDS);
Mockito.verify(fooMock).sendRequest(...);
}

关于java - 如何使用 Junit 测试实现 Runnable 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53270084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com