【发布时间】:2019-01-01 19:06:45
【问题描述】:
我正在考虑如何使用 mockito 编写测试用例。
例如,我在主线程中的部分逻辑是创建一个执行 3 件事的线程。 请在下面查看我的注释代码。
现在可以根据来自主程序的输入数量多次生成 RequestThread。
public class MainThreads {
public static void main(String[] args) {
RequestThread rt = new RequestThread("sample");
rt.start();
//RequestThread another = new RequestThread("sample-2");
//another.start();
//RequestThread newThread = new RequestThread("sample-3");
//newThread.start();
}
public static class RequestThread implements Runnable{
private final String request;
public RequestThread(String request) {
this.request = request;
}
@Override
public void run() {
//1. Instantiate a service passing the required request parameter
MyDataWebService service = new MyDataWebService(request);
//2. Get the returned data
List<String> dataList = service.requestData();
//3. Write to file
Path file = Paths.get("/someDir/" + request);
Files.write(file, dataList, Charset.forName("UTF-8"));
}
}
}
我的问题是,我无法弄清楚如何为线程类正确编写 JUnit/Mockito 测试。 一般来说,我对 Mockito 和 JUnit 的理解不是很好,所以我正在寻找一种单元测试的方法 线程应用程序。
有人可以指导我如何对这样的东西进行单元测试吗?
【问题讨论】:
-
你能模拟出线程吗?也可以考虑使用线程池?
-
这实际上是我的问题......我不知道如何模拟我的请求。我没有使用线程池,所以让我们说我只会产生一个线程
-
你确实意识到,你的代码现在不是多线程的,你应该使用 start() 方法而不是 run() 方法。
-
@HimanshuBhardwaj 哦对不起..我只是输入所有内容...有很多代码正在进行...所以我删除了不相关的部分...谢谢您指出这一点
-
是否可以对此类线程进行单元测试?所以那个线程做了很多事情......我在 Mockito 上找不到关于如何单元测试或模拟这样的事情的方法。有什么提示吗?