2016-08-01 89 views
1

我有一些可运行其中参数之一是委托与taskExecutor的执行另一个可运行:如何测试可运行哪些执行另一个可运行

@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); 
    } 
} 

应该怎么测试呢?

+0

没问题。有时我忘了关闭我的问题 – hudi

回答

1

看来delegatedTransactionalAsyncTaskExecutor是你班上的一个领域。

为了确保您可以测试它,你必须使用依赖注入,像这样:

class UnderTest { 
    private final Whatever delegatedTransactionalAsyncTaskExecutor; 
    UnderTest(Whatever delegatedTransactionalAsyncTaskExecutor) { 
    this.delegatedTransactionalAsyncTaskExecutor = delegatedTransactionalAsyncTaskExecutor; 
    ... 

而现在,你可以用嘲讽的框架来创建不管类的对象。 Mocks允许您指定您期望发生的方法调用;然后,您可以稍后验证这些电话确实发生了。

换句话说:你准备一个模拟;然后你调用run()...然后你检查你正在寻找的那些调用是否真的发生了。当然,对于整个事情的工作,你必须能够将这些模拟注入到你的“正在测试的课程”中。

相关问题