Testing code that uses CompletableFuture
in Java can be challenging due to its asynchronous nature. However, with the right techniques and tools, you can effectively verify that your code behaves as expected. This guide outlines some common strategies for testing code that relies on CompletableFuture
.
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExample {
public CompletableFuture fetchData() {
return CompletableFuture.supplyAsync(() -> {
// Simulate a long-running task
try {
Thread.sleep(1000); // Simulate delay
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Data Retrieved";
});
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
CompletableFutureExample example = new CompletableFutureExample();
CompletableFuture future = example.fetchData();
// Optionally wait for result
String result = future.get();
System.out.println(result); // Output: Data Retrieved
}
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?