How to write unit tests for methods that use threads.
In example below how to test someMethod method ?
public class SomeClass {
private final SomeOtherClass someOtherClassInstance = IoC.getInstance(SomeOtherClass.class);
private final ExecutorService executorService = Executors.newCachedThreadPool();
public void someMethod() {
executorService.execute(new Runnable() {
@Override
public void run() {
someOtherClassInstance.someOtherMethod();
}
});
}
}
Are there any solutions in java and .net for this purpose?
If there is another thread, you have wait until the method has been called. You have to decide how long you should wait before considering the method wasn’t called, there is no tool which can do that for you.
Of course you can mock the ExecutorService to run in the current thread and avoid the issue.