我有一些可运行的文件,其中一个参数是带有taskExecutor的委托(delegate)者来执行另一个可运行的文件:
@Override
public void run() {
try {
doTask(messageId);
} catch (Exception e) {
count++;
if (count < 4) {
delegatedTransactionalAsyncTaskExecutor.execute(this);
} else {
delegatedTransactionalAsyncTaskExecutor.execute(getOnExceedErrorTask(messageId));
}
throw new RuntimeException(e);
}
}
我应该如何测试这个?
最佳答案
看起来 delegateTransactionalAsyncTaskExecutor
是您的类中的一个字段。
为了确保可以测试它,您必须使用依赖注入(inject),如下所示:
class UnderTest {
private final Whatever delegatedTransactionalAsyncTaskExecutor;
UnderTest(Whatever delegatedTransactionalAsyncTaskExecutor) {
this.delegatedTransactionalAsyncTaskExecutor = delegatedTransactionalAsyncTaskExecutor;
...
现在,您可以使用模拟框架来创建 Whatever 类的对象。模拟允许您指定您期望发生的方法调用;然后,您可以稍后验证这些调用是否确实发生。
换句话说:你准备一个模拟;然后你调用 run() ...然后你检查你正在寻找的那些调用是否确实发生了。当然,为了使整个事情正常进行,您必须能够将这些模拟注入(inject)到您的“被测类”中。
关于java - 如何测试执行另一个可运行的可运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38699436/